DST Root CA X3
交叉签名将过期,现在使用其自己的 ISRG Root X1
来信任几乎所有设备,但对于个别设备来说,本文讲解几种如何避坑和解决浏览器提示证书安全问题,尤其是如果您提供 API 或必须支持 IoT 设备,则可能需要注意更改…
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 的设备,则需要确保两件事:
这些平台将一直工作到 2021 年 9 月,但将不再验证 Let's Encrypt 证书。
下面重点来了:
一、重新获取证书的时候,使用 --preferred-chain "ISRG Root X1"
参数,需要注意的是:--preferred-chain
在 certbot V1.12 中才引入。
二、如果还在用 certbot-auto,则需要更新到最新的版本(我用的 1.20),之前这个版本已经过期并停止维护了。
三、也可以手动编辑 fullchain.pem
文件,去掉最后证书,并重启 Web Server,比如 nginx。
如果使用的老版本 openssl ,先看下版本:
$ openssl version OpenSSL 1.0.2k-fips 26 Jan 2017
之后,执行 openssl
命令行,测试 Let’s Encrypt DST Root CA X3 :
openssl s_client -connect commandnotfound.cn:443 -servername commandnotfound.cn
$ openssl s_client -connect commandnotfound.cn:443 -servername commandnotfound.cn CONNECTED(00000003) depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = R3 verify return:1 depth=0 CN = commandnotfound.cn verify return:1 --- Certificate chain 0 s:/CN=commandnotfound.cn i:/C=US/O=Let's Encrypt/CN=R3 1 s:/C=US/O=Let's Encrypt/CN=R3 i:/C=US/O=Internet Security Research Group/CN=ISRG Root X1 --- Server certificate -----BEGIN CERTIFICATE----- MIIFQjCC... ... -----END CERTIFICATE----- subject=/CN=commandnotfound.cn issuer=/C=US/O=Let's Encrypt/CN=R3 ... Start Time: 1634539335 Timeout : 300 (sec) Verify return code: 0 (ok) ---
最后返回结果是 0,则表示彻底 OK 了!
如果仍然返回 Verify return code: 10 (certificate has expired),则表示没生效,请参考坑否上述解决办法(建议用 openssl 测试下)。