亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《无法从连接读取:远程错误:tls:未知证书》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。
问题内容
我正在 Go 中创建一个低级别的 Http/2 服务器,为了进行测试,我想使用自签名证书。我正在使用 openssl 和此命令来生成我的证书:
openssl req -x509 -newkey rsa:4096 -nodes -sha256 -subj /cn=localhost -keyout private.pem -out cert.pem
一切似乎都很好,当我 curl -kv https://127.0.0.1:443 --http2-prior-knowledge 时,我得到了这次握手
当我尝试连接 chrome 时,我收到此错误代码 net::err_cert_authority_invalid,当然我选择继续,但我的服务器退出了此 无法从连接中读取的连接:远程错误:tls:未知证书。
我尝试过制作不同的证书,但没有成功。如何与我的服务器和 chrome 建立 tls 连接?
这是我设置 tls 的方法:
cer, err := tls.LoadX509KeyPair("cert.pem", "private.pem")
if err != nil {
log.Println(err)
return
}
config := &tls.Config{Certificates: []tls.Certificate{cer}}
ln, err := tls.Listen("tcp", "localhost:443", config)
if err != nil {
log.Println(err)
return
}
defer ln.Close()
解决方案
Chrome 向您提供 NET::ERR_CERT_AUTHORITY_INVALID 正是因为您的证书是自签名的。要实现此功能,您需要创建自己的 CA(证书颁发机构),将其添加到 Chrome 中作为受信任的证书,然后使用该 CA 签署您的服务器证书(以便 Chrome 可以验证证书是否由受信任的 CA 签署)。
查看如何操作:Getting Chrome to accept self-signed localhost certificate
以上就是《无法从连接读取:远程错误:tls:未知证书》的详细内容.