discussions icon indicating copy to clipboard operation
discussions copied to clipboard

Let's Encrypt 默认签发的证书链中 DST Root CA X3 已于 2021 年 9 月 30 日过期

Open taoky opened this issue 2 years ago • 8 comments

Related: https://github.com/sjtug/mirror-requests/issues/221

今年 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 访问)。

希望能够在这里收集各用户对此问题的建议。

附:目前的解决方案可以参考 https://github.com/tuna/issues/issues/1342#issuecomment-931412628

taoky avatar Oct 11 '21 15:10 taoky

相关的用户反馈:

  • alpine 用国内源,出现 https 证书问题 - V2EX
  • 2021/10/1 LUG 校内群聊中同学反馈 Ubuntu 20.04 提示证书错误无法升级。
  • macOS 10.14 (Mojave) homebrew 更新失败(curl, git 链接的 LibreSSL 版本问题。需要在 /etc/ssl/cert.pem 中手动删除 DST 根证书)

taoky avatar Oct 11 '21 15:10 taoky

使用 acme.sh 选择新的证书链:

acme.sh <...> --preferred-chain "ISRG Root X1" <...>

Doc: https://github.com/acmesh-official/acme.sh/wiki/Preferred-Chain

iBug avatar Oct 11 '21 15:10 iBug

另,如果用的certbot,可以同樣在參數中增加 --preferred-chain "ISRG Root X1"

或者在 /etc/letsencrypt/renewal/<domain>.confrenewalparams 下增加 preferred_chain = ISRG Root X1

yangzhaofeng avatar Oct 11 '21 15:10 yangzhaofeng

SJTUG 已经部署切换证书链。

根据目前收集的情况,保留 DST 带来的「兼容性」好处远小于其带来的问题,因此我们计划在这两天更新。

taoky avatar Oct 11 '21 16:10 taoky

mirrors 已重新签发并部署不含 DST Root CA X3 的证书链,<lug.ustc.edu.cn> 暂时保持不动。

iBug avatar Oct 11 '21 16:10 iBug

proxy.* 似乎还没有换,这个有计划吗(

skyzh avatar Oct 12 '21 05:10 skyzh

proxy.* 似乎还没有换,这个有计划吗(

现在 *.proxy.ustclug.org 和 LUG 除了 mirrors 以外的站点共用一张证书,可能会考虑把 proxy 单独拆开来,但是要改配置,所以还得等一段时间。

taoky avatar Oct 12 '21 06:10 taoky

proxy 情况有点复杂,有 Unix 工具使用的代理(crates.io,launchpad,npm,docker 等),也有浏览器使用的代理(fonts,ajax 等)

iBug avatar Oct 12 '21 07:10 iBug