使用GO语言验证证书的有效期

背景

定时扫描K8s集群证书的过期时间, exporter 需要运行 daemonset 感觉过于浪费资源, 打算自己用Go下一个工具, 定时在每个节点上都拉起一下, 跑完了就销毁.

解决方案

要使用 Go 语言验证证书的有效期,可以使用以下代码示例:

go 复制代码
package main

import (
    "crypto/x509"
    "encoding/pem"
    "fmt"
    "io/ioutil"
    "time"
)

func main() {
    certPEM, err := ioutil.ReadFile("path/to/certificate.pem")
    if err != nil {
        fmt.Println("Error reading certificate file:", err)
        return
    }

    block, _ := pem.Decode(certPEM)
    if block == nil {
        fmt.Println("Failed to parse certificate PEM")
        return
    }

    cert, err := x509.ParseCertificate(block.Bytes)
    if err != nil {
        fmt.Println("Error parsing certificate:", err)
        return
    }
    
    fmt.Println("Certificate Expiry Date:", cert.NotAfter)
    now := time.Now()
    if now.Before(cert.NotBefore) {
        fmt.Println("Certificate is not yet valid")
    } else if now.After(cert.NotAfter) {
        fmt.Println("Certificate has expired")
    } else {
        fmt.Println("Certificate is valid")
    }
}

在上面的代码中,需要将 path/to/certificate.pem 替换为您要验证的证书文件的路径。代码将读取证书文件,解析证书并检查当前时间是否在证书的有效期内。根据验证结果,将输出相应的结果。

相关推荐
开开心心就好1 分钟前
图片白底怎么去掉?抠图工具抠完背景透明
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
朝朝辞暮i3 分钟前
C++ 第 22 课:const —— 不允许随便修改的数据
开发语言·c++·算法
web打印社区8 分钟前
JS 静默打印怎么做:纯前端为什么不行,以及最小可跑通写法
开发语言·前端·javascript·websocket·网络协议·http·pdf
大圣编蚕10 分钟前
C语言怎么写小游戏?从零开始做一个贪吃蛇
c语言·开发语言
Cosolar12 分钟前
云端部署阿里 Qwen-Image-2.1 保姆级教程
人工智能·后端·github
Chen—LSN30 分钟前
数据结构——拿捏复杂度
java·c语言·开发语言·数据结构·经验分享·笔记·算法
阿钱真强道42 分钟前
25 嵌入式操作系统 | 设备面板:用 Qt 控件把“设备“画出来(本节不接串口)
开发语言·qt·flask·架构设计·协议契约
ym hyd 1111 小时前
宝宝早教服务系统源码 Java+SpringBoot+Vue3 前后分离
java·开发语言·spring boot
yunwei371 小时前
eBPF 开发实践:使用 sockops 加速网络请求转发
linux·后端·性能优化
看浪的路人1 小时前
第7讲:实时告警与自动化响应
开发语言·后端·golang