![仅在我的 Linux 计算机上无效 SSL 证书](https://linux22.com/image/168587/%E4%BB%85%E5%9C%A8%E6%88%91%E7%9A%84%20Linux%20%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E6%97%A0%E6%95%88%20SSL%20%E8%AF%81%E4%B9%A6.png)
我正在托管一个网站,我的 DNS 服务器来自 NameCheap,我在那里购买了 SSL 证书并通过 nginx 配置它,一切都很好,但是有一天 chrome 开始抱怨该证书现在无效(并且到期日期是尚未通过),我的网站是 lodugo.com,这也发生在我现在不记得的其他一些特定页面上,但它只发生在我个人的 Linux 笔记本电脑、任何其他网络中的任何其他设备(本地或通过网络)互联网,没有问题
最有趣的是,如果我在我的个人 Linux 笔记本电脑上以隐身模式使用 chrome,它不会抱怨证书。
我将其发布在这里,因为看起来操作系统正在拒绝证书本身,或者这就是 chrome 所说的:
This server could not prove that it is lodugo.com; its security certificate is not trusted by your computer's operating system. This may be caused by a misconfiguration or an attacker intercepting your connection.
我已经检查了基础知识,我的时间和日期都很好,其他设备在任何情况下都工作正常,我没有接触服务器端的任何内容。任何人都可以帮助提示或解释可能发生的情况吗?
在这里您可以找到有错误且处于隐身模式的证书图片(没有错误且在同一台机器上)
答案1
这听起来像是 Chrome 无权访问必要的 CA 证书。快速检查一下ssllabs.com表明您的网站缺少中间证书。当您购买证书时,他们通常会为您提供中级证书以及您自己的证书。
通常,浏览器只会存储根 CA 证书,并期望 Web 服务器将中间证书与 Web 服务器自己的证书一起发送。中间证书由浏览器已知的根 CA 签名,Web 服务器的证书由中间证书签名。这创建了一条信任链。但是当浏览器无法访问中间证书时,该链就会被破坏。
要在 nginx 上安装它,只需将两者结合在一起,将证书放在文件的前面:
cat my_certificate.crt intermediate.crt > certificate_for_nginx.crt
我不确定 chrome 如何管理其证书,我的印象是它管理自己的证书。但是,如果它确实使用操作系统自己的证书,那么您可以使用以下命令测试您的网站是否针对 Linux 配置良好:
openssl s_client -connect example.com:443
当我在你的网站上尝试这个时,我得到:
...
Start Time: 1583258842
Timeout : 7200 (sec)
Verify return code: 21 (unable to verify the first certificate)
Extended master secret: yes
同样,这表明证书无法通过身份验证。通常这意味着它找不到证书,其他错误往往更具描述性。