ssl - SSL 证书有效但浏览器显示无效
问题描述
我正在寻找几个小时的解决方案,但找不到任何解决方案。我正在通过 certbot 使用letsencrypt ssl。
我的域是ektaz.com
当我在浏览器上检查证书时显示
Expires: 8 November 2021 Monday 16:24:33 GMT+03:00
当我从服务器端检查它时,certbot certificates
我得到的结果为
Expiry Date: 2021-11-08 13:24:33+00:00 (VALID: 39 days)
但是所有浏览器都说证书无效,我不明白为什么。
此外,我已经多次更新此证书certbot renew
,到目前为止我没有任何问题。我已经清除了所有缓存,尝试过的结果是一样的。我多次重新启动apache。甚至重新启动服务器但没有任何改变。
服务器操作系统:Ubuntu 20.04 LTS
解决方案
您的证书可能根本不是无效的。
有一个简单的解决方法。我在这个例子中使用了 nginx 配置风格:
ssl_certificate /usr/local/etc/letsencrypt/live/domain.com/cert.pem;
像这样的行需要被这样的行替换
ssl_certificate /usr/local/etc/letsencrypt/live/domain.com/fullchain.pem;
然后刷新服务器的配置。
这个问题无处不在,包括小型和大型网站。
根本原因是旧教程用于配置为 cert.pem 文件提供服务的网络服务器(因为它有效),而不是确保浏览器获得验证证书所需的完整链的 fullchain.pem 文件。
不幸的是,Apple、Mozilla 和其他一些人已经放弃并仍在使用相同的中间证书 (IdentTrust DST Global Root CA X3),该证书于昨天下午 2:21:40 CST 过期,以检查之前使用它的证书。iOS 15.0 (19A346) 是唯一发布的 Apple 软件版本,即使服务器未发送完整链,也会自动使用新的中间证书。
服务器使用的实际中间证书由 ISRG Root X1 颁发给 R3,但除非您将服务器配置为通过使用服务器配置中的 fullchain.pem 明确告知浏览器,否则遗憾的是,许多软件公司都放弃了不要自己做对。
但再一次,这是一个简单的解决方法。只需对服务器配置文件“cert.pem”->“fullchain.pem”中的行稍作更改,就可以了。
并且没有理由不永久使用 fullchain.pem 文件。事实上,即使在这种情况发生之前,各种网络(大学校园 WiFi 网络都因此而臭名昭著)会破坏您的证书的授权链,除非您仍然使用 fullchain.pem 文件。Let's Encrypt 甚至现在建议将此作为配置 Web 服务器以使用证书的唯一正确方法。
推荐阅读
- javascript - 如何在手动添加的字段中插入值而脚本 imgur 不生成另一个?
- react-native - 反应原生平面列表改变方向
- c++ - Intel NCS2 vpu 不支持动态批处理
- c# - 替换字符串句子中的多个单词C#
- elasticsearch - Filebeat hassting 问题
- python - 如何从开关访问开关参数/ ID?
- laravel - 在 laravel 中同时以用户和管理员身份登录
- nginx - Kubernetes 上的 nginx 无法访问 Angular 应用程序
- vue.js - 当 vue 项目位于子目录中时,如何使用 webpack 设置 vscode / chrome 调试器
- javascript - selectionStart 和 selectionEnd 返回不准确的索引 (IE)