首页 > 后端开发 > Golang > 为什么我的自签名证书 TLS 连接失败以及如何修复?

为什么我的自签名证书 TLS 连接失败以及如何修复?

Mary-Kate Olsen
发布: 2024-12-19 15:58:17
原创
749 人浏览过

Why Does My TLS Connection Fail with a Self-Signed Certificate and How Can I Fix It?

使用自签名证书排除 TLS 连接问题

问题: 使用自签名服务器建立 TLS 连接证书失败并显示错误,指示未知证书

相关代码:
客户端:

CA_Pool := x509.NewCertPool()
severCert, err := ioutil.ReadFile("./cert.pem")
CA_Pool.AppendCertsFromPEM(severCert)

config := tls.Config{RootCAs: CA_Pool}
登录后复制

服务器:

cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")
config := tls.Config{Certificates: []tls.Certificate{cert}}
登录后复制

错误消息:

client: dial: x509: certificate signed by unknown authority 
(possibly because of "x509: invalid signature: parent certificate
cannot sign this kind of certificate" while trying to verify 
candidate authority certificate "serial:0")
登录后复制

根本原因:
生成的自签名证书没有设置 IsCA 标志,表明它不是中间证书或根证书。因此,客户端的 CA 池无法将自签名证书验证为有效的颁发机构。

解决方案:
要纠正此问题,请确保 IsCA 标志为使用 x509.CreateCertificate 生成自签名证书时设置。正确的证书生成代码如下:

certTemplate := &x509.Certificate{
    IsCA: true,
    KeyUsage: x509.KeyUsageCertSign,
    // ... other certificate parameters
}
登录后复制

通过设置IsCA:true,自签名证书可以正常充当证书颁发机构,使客户端能够验证其真实性。

以上是为什么我的自签名证书 TLS 连接失败以及如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板