Go 查看证书文件到期时间

1375人浏览 2022-09-19

代码如下:

//CheckSSL 校验证书到期时间
// return 到期时间, 证书是否过期,错误
func CheckSSL(url string) (time.Time, bool, error) {
	client := &http.Client{
		Transport: &http.Transport{
			// 注意如果证书已过期,那么只有在关闭证书校验的情况下链接才能建立成功
			TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
		},
		// 10s 超时后认为服务挂了
		Timeout: 10 * time.Second,
	}
	resp, err := client.Get(url)
	if err != nil {
		return time.Time{}, false, err
	}
	defer func() { _ = resp.Body.Close() }()

	// 遍历所有证书
	for _, cert := range resp.TLS.PeerCertificates {
		// 检测证书是否已经过期
		if !cert.NotAfter.After(time.Now()) {
			return cert.NotAfter.Local(), false, nil
		} else {
			return cert.NotAfter.Local(), true, nil
		}
	}
	return time.Time{}, false, errors.New("Error of SSL expire")
}

 

推荐文章

GORM 自定义结构体关联的数据库表名称和自定义结构体字段对应的数据表字段名
2021-02-23
KChatRoom在线多人聊天室,项目是使用Websocket和Gin框架基于Golang开发的在线聊天室
2021-05-17
Gin框架下获取所有路由信息
2021-07-14
搜索文章