SSL 证书有效但浏览器显示无效

SSL certificate is valid but browsers say invalid

我花了几个小时寻找解决方案,但找不到任何解决方案。我正在通过 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。甚至重新启动了服务器,但没有任何改变。

服务器 OS : 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 和其他一些公司失手了,他们仍在使用昨天下午 2:21:40 下午 CST 到期的相同中间证书 (IdentTrust DST Global Root CA X3) 来检查证书以前用过。 iOS 15.0 (19A346) 是唯一发布的 Apple 软件版本,即使服务器未发送完整链,它也会自动使用新的中间证书。

服务器使用的实际中间证书由 ISRG Root X1 颁发给 R3,但除非您将服务器配置为使用服务器配置中的 fullchain.pem 显式告知浏览器,否则遗憾的是许多软件公司都失误了,没有自己做对。

但再一次,这是一个简单的修复。只需对服务器配置文件“cert.pem”->“fullchain.pem”中的行稍作更改,就可以了。

而且没有理由不继续永久使用 fullchain.pem 文件。事实上,即使在这种情况发生之前,各种网络(大学校园 WiFi 网络为此臭名昭著)也会搞砸您的证书的授权链,除非您无论如何都使用 fullchain.pem 文件。 Let's Encrypt 现在甚至推荐将此作为配置 Web 服务器以使用证书的唯一正确方法。