gpt4 book ai didi

ssl - golang SSL认证

转载 作者:IT王子 更新时间:2023-10-29 01:11:13 25 4
gpt4 key购买 nike

所以,我在这里尝试让套接字监听 SSL 连接。但是,它无法进行握手。运行时

 sudo openssl s_client -CApath /etc/ssl/certs/ -connect localhost:8080

无法验证第一个证书。

我对这些 SSL 经验很少。谁能帮忙?

  cert, err := tls.LoadX509KeyPair("positivessl.crt", "key.pem")
Error.CheckError(err)

rootCert, err := ioutil.ReadFile("AddTrustExternalCARoot.crt")
checkError(err)
trustCert, err := ioutil.ReadFile("COMODORSAAddTrustCA.crt")
checkError(err)
validationCert, err := ioutil.ReadFile("COMODORSADomainValidationSecureServerCA.crt")
checkError(err)

certs := x509.NewCertPool()
certs.AppendCertsFromPEM(validationCert)
certs.AppendCertsFromPEM(trustCert)
certs.AppendCertsFromPEM(rootCert)

sslConfig := tls.Config{RootCAs: certs,Certificates: []tls.Certificate{cert}}
sslConfig.Rand = rand.Reader

listener, err := tls.Listen("tcp", service, &sslConfig)

最佳答案

我不熟悉 go 本身,但从 http://golang.org/pkg/crypto/tls/ 的文档中了解它们看起来与其他 SSL 堆栈相似:

  • rootCert 不应包含在链中。根证书是用于客户端证书链验证的实际信任 anchor ,因此客户端必须已经知道并信任它。
  • RootCA 是用于验证证书的可信证书。这些不会发送给对等方,而是在验证收到的证书时用作信任 anchor 。因此,此设置与客户端相关,用于验证服务器证书,也可能与客户端发送证书时的服务器端相关。
  • 相反,您要发送给对等方的所有证书都必须包含在 Certificates 中。也就是说,不仅是叶证书cert,还有链证书validationCerttrustCert。您必须以正确的顺序包含它们,以便它们构建一个链,然后客户端可以使用受信任的根证书完成该链。

关于ssl - golang SSL认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25578615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com