问题现象描述:
站点 SSL 用 Let’s Encrypt,在 win10 中访问正常,在 win7 中提示:该证书已过期 或者尚未生效
原因:
经过查询资料,在老的设备上会遇到该问题,据称是 Let’s Encrypt 根证书 DST Root CA X3 过期导致
参考:
2021年 9 月 30 日之后,Let’s Encrypt 默认签发的证书链中 DST Root CA X3 过期,而旧的 Android 设备根证书库中不包含 ISRG Root X1。对于这个问题,Let’s Encrypt 采取的兼容性方案是签发 DST Root CA X3 -> ISRG Root X1 -> Let’s Encrypt R3 -> 用户证书 的证书链(见 https://letsencrypt.org/2020/12/21/extending-android-compatibility.html),而:
- ISRG 在大部分比较新的系统的根证书库中,可以正常使用;
- Android 会忽略根证书过期时间。
理论上这条证书链不会出现问题,但是旧版本的 OpenSSL、GnuTLS、LibreSSL 会在发现 DST 过期后,直接判断整条证书链无效。这会导致长时间未升级或已经 EOL 的 Linux 发行版用户,以及其他部分使用了与旧版本 TLS 相关库链接的程序的用户在以 HTTPS 访问镜像站时会出现证书过期的提示。
如果在申请证书时选择不含 DST 的 alternative chain,那么从目前已知的信息看,只会影响使用 Android < 7.1.1 的用户以 HTTPS 方式访问镜像站(需要设置忽略证书问题或者使用 HTTP 访问)。
目前解决方案:
原来图省事用了 Let’s Encrypt 的证书,现在还是改成在阿里云中申请证书,虽然麻烦点