原理:使用go提供的子產品
crypto/tls
,可以擷取域名證書的資訊,通過到期時間可以判斷證書是否過期
package main
import (
"crypto/tls"
"fmt"
)
func main() {
conn, _ := tls.Dial("tcp", "www.baidu.com:443", nil)
cert := conn.ConnectionState().PeerCertificates[0]
// 時間資訊
fmt.Printf("NotBefore: %v\n", cert.NotBefore)
// NotBefore: 2022-07-05 05:16:02 +0000 UTC
fmt.Printf("NotAfter: %v\n", cert.NotAfter)
// NotAfter: 2023-08-06 05:16:01 +0000 UTC
// 其他資訊
fmt.Printf("IPAddresses: %v\n", cert.IPAddresses)
fmt.Printf("Version: %v\n", cert.Version)
fmt.Printf("SerialNumber: %v\n", cert.SerialNumber)
fmt.Printf("Issuer: %v\n", cert.Issuer)
fmt.Printf("Subject: %v\n", cert.Subject)
}