Aor*_*Aor 4 ssl ssl-certificate go
我正在尝试找到一个类似于Python的函数ssl.get_server_certificate(),它接受一个主机名 - 端口对并返回一个PEM编码的证书,但我没有运气.
我已经做了相当多的挖掘,但我发现的最接近的问题(在golang中获取远程ssl证书)没有帮助,也没有阅读包的文档crypto/tls.我是Go的新手,所以我可能还没有理解文档中的内容
import (
"bytes"
"crypto/tls"
"encoding/pem"
)
func GetCertificatesPEM(address string) (string, error) {
conn, err := tls.Dial("tcp", address, &tls.Config{
InsecureSkipVerify: true,
})
if err != nil {
return "", err
}
defer conn.Close()
var b bytes.Buffer
for _, cert := range conn.ConnectionState().PeerCertificates {
err := pem.Encode(&b, &pem.Block{
Type: "CERTIFICATE",
Bytes: cert.Raw,
})
if err != nil {
return "", err
}
}
return b.String(), nil
}
Run Code Online (Sandbox Code Playgroud)
用法:
certs, err := GetCertificatesPEM("example.com:443")
Run Code Online (Sandbox Code Playgroud)