Let's Encrypt DST Root CA X3 Expiration

Introduction

日前在偶然地瀏覽自己網站找資源的時候,發現 Cloudflare 顯示 Error 526 Invalid SSL certificate(如下圖所示),當下的第一反應是憑證過期,但在開始查找後發現案情並不單純。

error-526-invalid-ssl-certificate

Invalid SSL Certificate

Invalid SSL Certificate 表示當前網站使用的是無效的 SSL 憑證,通常會出現此項問題的原因在於:

  • 不正確的 SSL 憑證格式
  • 不匹配的域名
  • 憑證過期

由於先前並沒有發生任何異常,因此排除第一項與第二項。而主機本身有使用 Certbot,每三個月會自動更新 Let’s Encrypt 憑證。預防萬一,也同時確認過憑證簽發日期與過期時間,不管哪個方面都指出目前的 Let’s Encrypt 是有效憑證。

在尋找問題的過程中偶然發現在 GitHub 上的討論串,在內容中提到了 DST Root CA X3 Expiration。在 Let’s Encrypt 網站中有對此做詳細的說明。

DST Root CA X3 Expiration

2021 年 9 月 30 日更新 按計畫,DST Root CA X3 交叉簽名(cross-sign)已經過期,我們現在使用我們自己的 ISRG Root X1 來信任幾乎所有裝置。有關該計畫的更多細節,請繼續閱讀!我們還更新了我們社群論壇上的產品鏈變化緒(roduction Chain Changes thread ),我們的團隊和社群在這裡,隨時準備幫助您解決關於這個到期的任何問題。

在 2021 年 9 月 30 日,舊版瀏覽器和裝置對 Let’s Encrypt 憑證的信任方式將有一個小變化。如果您運行一個標準的網站,那不會注意到有甚麼不同──因為絕大多數訪問網站的使用者仍然會接受您的 Let’s Encrypt 憑證──。但如果您提供一個 API 或必須支援 IoT 裝置,則可能需要多注意一下這個變化。

Let’s Encrypt 有一個名為 IRSG Root X1 的「根憑證(root certificate)」,現代瀏覽器和裝置信任安裝在您網站上的 Let’s Encrypt 憑證,是因為他們有將 ISRG Root X1 列入其根憑證列表中。為了確保我們簽發的憑證在舊裝置上受到信任,我們有有一個來自舊根憑證的交叉簽名(cross-signature):DST Root CA X3。

當我們開始的時候,那個舊的根憑證(DST Root CA X3)協助我們開始,並立即被幾乎所有的裝置信任。較新的根憑證(IRSG Root X1)現在也被廣泛信任,但依些較舊的裝置永遠不會信任他,因為他們沒有得到軟體更新(例如 iPhone 4 或 HTC Dream 等),您可以從這裡查看那些平台信任 IRSG Root X1。

DST Root CA X3 將於 2021 年 9 月 30 日到期,這表示那些不信任 IRSG Root X1 的舊裝置在訪問使用 Let’s Encrypt 憑證的網站時將開始收到憑證警告。但這有一個重要的例外:不信任 ISRG Root X1 的舊 Android 裝置將繼續使用 Let’s Encrypt,而這要歸功於 DST Root CA X3 的一個特殊交叉簽名(cross-sign),該簽名在該根憑證的到期日後將繼續有效,但僅限於 Android 系統。

您應該要怎麼做?得益於廣泛的相容性,對於大多數人來說,由於我們已經設定了憑證的發行,因此您甚麼都不用做,網站即可在大多數情況下都正確的運行。但如果您提供一個 API 或必須支援 IoT 裝置,您需要確保兩件事情:

  • 您的 API 與所有客戶端必須信任 ISRG Root X1(而不僅僅是DST Root CA X3)。
  • 如果您的 API 客戶端使用 OpenSSL,他們必須使用 1.1.0 或更高的版本。

在 OpenSSL 1.0.x 的憑證檢驗中有一個怪癖:即使是信任 ISRG Root X1 的客戶端,再看到我們默認推薦的 Android 相容的憑證鍊(certificate chain)時也會失敗。

如果您想了解更多有關我們正在進行的產品鍊變化(production chain changes)的訊息,請查看我們社群中的這個主題

如果您對即將到期的產品有任何疑問,請在我們的論壇上發表這個主題

Solution

解決方式:更新系統、重開機。

1
2
$ sudo apt -y update
$ sudo reboot

References