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

添加評論