Let’s Encrypt 官方在2021年5月7日就发布了相关新闻:
https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/
翻译内容如下:
2021 年 9 月 30 日,旧版浏览器和设备对 Let's Encrypt 证书的信任方式将发生微小变化。如果您运行一个典型的网站,您不会注意到任何区别 - 您的绝大多数访问者仍会接受您的 Let's Encrypt 证书。如果您提供 API 或必须支持 IoT 设备,则可能需要多注意更改。
Let's Encrypt 有一个名为ISRG Root X1的“根证书” 。现代浏览器和设备信任您网站上安装的 Let's Encrypt 证书,因为它们在其根证书列表中包含 ISRG Root X1。为了确保我们颁发的证书在旧设备上可信,我们还有一个来自旧根证书的“交叉签名”:DST Root CA X3。
当我们开始时,旧的根证书 (DST Root CA X3) 帮助我们起步并立即得到几乎所有设备的信任。较新的根证书 (ISRG Root X1) 现在也受到广泛信任 - 但一些较旧的设备永远不会信任它,因为它们没有获得软件更新(例如,iPhone 4 或 HTC Dream)。单击此处查看哪些平台信任 ISRG Root X1 的列表。
DST Root CA X3 将于 2021 年 9 月 30 日到期。这意味着那些不信任 ISRG Root X1 的旧设备在访问使用 Let's Encrypt 证书的站点时将开始收到证书警告。有一个重要的例外:不信任 ISRG Root X1 的旧 Android 设备将继续与 Let's Encrypt 一起使用,这要归功于 DST Root CA X3 的特殊交叉签名,该交叉签名 超过了该根的到期时间。此异常仅适用于 Android。
你该怎么办?对于大多数人来说,什么都没有!我们已经设置了证书颁发机构,因此您的网站在大多数情况下都会做正确的事情,有利于广泛的兼容性。如果您提供 API 或必须支持 IoT 设备,则需要确保两件事:(1) API 的所有客户端都必须信任 ISRG Root X1(不仅仅是 DST Root CA X3),以及 (2) 如果您的 API 的客户端使用 OpenSSL,它们必须使用 1.1.0 或更高版本。在 OpenSSL 1.0.x 中,证书验证中的一个怪癖意味着,即使是信任 ISRG Root X1 的客户端,在提供我们默认推荐的与 Android 兼容的证书链时也会失败。
如果您想了解有关我们正在进行的生产链更改的更多信息, 请查看我们社区中的此主题。
如果您对即将到来的到期有任何疑问, 请在我们的论坛上发帖到此主题。
总结说就是之前有个老的根证书DST Root CA X3 是为了兼容老客户端,因为老客户端只识别DST Root CA X3 ,不识别新根ISRG Root X1,但是现在这些老家伙确实该淘汰了,官方会让DST Root CA X3 这个老根失效。
所以,是否出现问题,取决于客户端对证书的验证方式,一些在操作系统上的java程序,会根据证书链验证到根证书,也就是DST Root X1,这个证书存在于linux操作系统位置/etc/pki/tls/certs/ca-bundle.crt,发现DST Root X1 过期,就会出现问题。
研究一下这张证书链的图:
证书在签署的时候默认走的证书链是这样:
证书本身-->
中间证书 --> R3 (Cross-signed by IdenTrust)
根证书--> ISRG Root X1 (Cross-signed by DST Root CA X3)
要改成这样:
证书本身-->
中间证书 --> R3 (Signed by ISRG Root X1)
根证书--> ISRG Root X1 (Self-signed)
解决办法,在用acme签署证书时,指定根证书,参数--preferred-chain
可以参考:
https://community.letsencrypt.org/t/acme-sh-supports-preferred-chain/131205
如果遇到windows的兼容问题,可以清除过期的根证书:
开始--运行-- 在cmd的dos窗口里敲命令:
certmgr.msc
会弹出证书管理窗口,在”Trusted Root Certification Authorities“ 信任的根证书授权里,选择“Certificates” 证书
找到“DST Root CA X3”,删掉。
下载新根:https://letsencrypt.org/certs/isrgrootx1.der
双击安装
如果是centos6等老linux系统,执行命令:
yum update ca-certificates -y