gpt4 book ai didi

firefox - Golang https证书错误: remote error: tls: unknown certificate authority

转载 作者:IT王子 更新时间:2023-10-29 01:47:05 27 4
gpt4 key购买 nike

我已经使用以下方法制作了我的证书和 key

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

并在我的 Golang 代码中配置它

log.Fatal(http.ListenAndServeTLS(":4201", "cert.pem", "key.pem", router))

在使用 chrome 访问时运行良好,但在使用 firefox 访问时在控制台上抛出错误。

2018/03/02 16:54:11 http: TLS handshake error from 100.67.56.121:54397: remote error: tls: unknown certificate authority

我该如何解决这个问题?

最佳答案

“远程错误”是指从客户端(在本例中为 firefox)发送的错误。

解决办法是弄清楚为什么 firefox 不喜欢证书并修复它。

firefox 不喜欢证书的某些方面。打开 firefox 开发工具,看看是否可以找到关于证书的任何警告。如果您必须在 Firefox 中手动接受证书,那么 Firefox 可能仍然向服务器报告它不喜欢该证书,即使您已告诉 firefox 无论如何加载页面(请参阅下面的 chrome 示例)。

然而,由于这是一个自生成/签名的证书,所以警告可能是因为 firefox 不信任该证书。如果此服务器仅供您个人使用,解决方案是将此证书添加到 firefox 的受信任证书中……或者获取由商业 CA 或 letsencrypt 签名的证书。

“修复此服务器端”意味着修复有关您的证书/应用程序的服务方式的任何内容,以使其受到 Firefox 的信任。或者,如果您只是在进行开发,我想忽略这些错误。

更多详情...

这里的关键是这是一个“远程错误”,意思是它是来自连接到您的服务器的 tls 客户端的错误。在您的情况下,Firefox 在 TLS 握手期间提示证书在某种程度上无效。

我注意到 chrome 也有同样的问题。证书由公共(public) CA(即大多数浏览器应信任的 CA)签署,但当我在本地计算机上开发时,证书无效,因为主机名 (localhost) 与证书 CommonName (CN) 或主题不匹配备用名称 (SAN)。

最简单的事情就是在 wireshark 中查看 TLS 握手。

wireshark handshake capture

我告诉 chrome 接受证书,开始捕获并对页面进行单次刷新(在本例中为 https://localhost:8081)。 Chrome 不会向我显示警告页面并显示内容。但是地址栏中有一个红色警告。

有趣的是(对我而言)似乎有两次 TLS 握手(我不是 TLS 专家)。

客户你好服务器你好警报(客户端错误)客户您好服务器你好客户端完成握手...加密的应用程序数据...

由于 chrome 不会中断我的页面刷新,我不确定为什么 chrome 会为单个页面刷新进行两次握手(第一次出现警报/失败)。

我在这里学到的有趣的一点(事后看来很明显)是当浏览器/客户端拒绝您的证书时,可以从他们那里获得报告。这可以在服务器端使用(如果被监控)来发现生产中你的测试用例可能没有涵盖的细微证书错误配置。不幸的是,因为这是 pre-http 你不会得到用户代理或任何有用的东西来帮助重现....但是大量的这些错误作为服务器流量的百分比表明你需要做一些严重的跨浏览器/操作系统/设备测试

关于firefox - Golang https证书错误: remote error: tls: unknown certificate authority,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49064937/

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