IdenTrust 根证书过期将导致旧设备上的 Let's Encrypt 失去信任

莫斯科时间 30 月 17 日 01:3,IdenTrust 根证书(DST Root CA X1)用于交叉签署由社区和社区控制的 Let's Encrypt 证书颁发机构(ISRG Root XXNUMX)的根证书。免费向所有人提供证书,但会过期。 交叉签名确保 Let's Encrypt 证书在各种设备、操作系统和浏览器中受到信任,同时 Let's Encrypt 自己的根证书已集成到根证书存储中。

原本计划在 DST Root CA X3 被弃用后,Let's Encrypt 项目将转而仅使用其根证书生成签名,但此举将导致与大量不支持根证书的旧系统失去兼容性。将 Let's Encrypt 根证书添加到其存储库中。 特别是,大约 30% 的正在使用的 Android 设备没有 Let's Encrypt 根证书的数据,而对该根证书的支持仅从 7.1.1 年底发布的 Android 2016 平台开始出现。

Let's Encrypt 不打算签订新的交叉签名协议,因为这会给协议各方带来额外的责任,剥夺他们的独立性,并在遵守另一个认证机构的所有程序和规则方面束缚他们的手脚。 但由于大量 Android 设备上存在潜在问题,该计划被修改。 与 IdenTrust 认证机构签订了一项新协议,在该协议的框架内创建了替代的交叉签名 Let's Encrypt 中间证书。 交叉签名的有效期为三年,并且从 2.3.6 版本开始将保持对 Android 设备的支持。

然而,新的中间证书并不涵盖许多其他遗留系统。 例如,当 DST 根 CA X3 证书于 30 月 1 日弃用时,不受支持的固件和操作系统将不再接受 Let's Encrypt 证书,这些固件和操作系统需要手动将 ISRG 根 XXNUMX 证书添加到根证书存储以确保对 Let's Encrypt 证书的信任。 问题将表现在:

  • OpenSSL 直至分支 1.0.2(含)(分支 1.0.2 的维护已于 2019 年 XNUMX 月停止);
  • 国家安全标准<3.26;
  • Java 8 < 8u141,Java 7 < 7u151;
  • Windows < XP SP3;
  • macOS < 10.12.1;
  • iOS < 10 (iPhone < 5);
  • 安卓<2.3.6;
  • Mozilla 火狐 < 50;
  • 乌班图<16.04;
  • Debian < 8。

对于 OpenSSL 1.0.2,该问题是由一个错误引起的,如果用于签名的根证书之一过期,即使其他有效的信任链仍然存在,该错误也会阻止正确处理交叉签名证书。 去年,用于交叉签署来自 Sectigo (Comodo) 证书颁发机构的证书的 AddTrust 证书过时后,该问题首次出现。 问题的关键在于 OpenSSL 将证书解析为线性链,而根据 RFC 4158,证书可以表示有向分布式循环图,其中需要考虑多个信任锚。

基于 OpenSSL 1.0.2 的旧发行版的用户可以使用三种解决方法来解决该问题:

  • 手动删除 IdenTrust DST Root CA X3 根证书并安装独立(非交叉签名)ISRG Root X1 根证书。
  • 运行 openssl verify 和 s_client 命令时,可以指定“--trusted_first”选项。
  • 在服务器上使用由单独的根证书 SRG Root X1 认证的证书,该证书没有交叉签名。 此方法将导致失去与旧版 Android 客户端的兼容性。

此外,我们可以注意到 Let's Encrypt 项目已经突破了生成 2.2 亿个证书的里程碑。 去年 2.4 月达到了 192 亿的里程碑。 每天生成 260-195 万个新证书。 活跃证书数量为150亿个(证书有效期为三个月),覆盖约60亿个域名(一年前覆盖82亿个域名,两年前覆盖81亿个域名,三年前覆盖77万个域名)。 根据 Firefox Telemetry 服务的统计,全球通过 HTTPS 进行页面请求的比例为 69%(一年前 - 58%,两年前 - XNUMX%,三年前 - XNUMX%,四年前 - XNUMX%)。

来源: opennet.ru

添加评论