某台持續爬網頁抓資料的排程忽然出現 The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel 訊息,推測為 SSL 憑證失效引起。
連至該主機使用瀏覽器檢視,果真憑證顯示異常:
錯誤訊息如下:
Windows does not have enough information to verify this certificate.
Windows 沒有足夠資訊可以確認這個憑證。
對照其他主機看到的憑證則很正常。
爬文得知此類問題出在缺少受信任的根憑證授權單位(Trusted Root Certification Authorities)或中繼憑證授權單位(Intermediate Certification Authorities)憑證資料造成。實際檢查問題主機,VeriSign CA 憑證 OK,但少了 Symantec Class 3 Secure Server CA - G4 中繼 CA 憑證。
最後,由其他主機匯出 Symantec 中繼 CA 憑證安裝在問題主機後順利排除問題!
問題已解,留下幾個疑點:
- 缺憑證問題多發生於第一次連網站。早上還正常,近中午才出現缺少中繼 CA 憑證錯誤有些令人費解。 (新憑證有效起始日期頗近,出錯時間又接近整點,不排除正巧遇上站方換憑證的可能性)
- 依我的理解,SSL 協商過程網站有責任附上中繼 CA 憑證供瀏覽器驗證信任鏈,為何需要手動補安裝?
因無法重現問題反覆檢驗,先歸入 X 檔案。
貼文後沒多久,Aska 回饋一則相似案例:因 SHA1 升級 SHA2 換 SSL 憑證(2017 起瀏覽器們將開始撲殺 SHA1 SSL 憑證),中繼 CA 由 Verisign Class 3 Secure Server CA - G3換成 Symantec Class 3 Secure Server CA - G4,客戶端也發生缺少中繼 CA 憑證的狀況,推測本案應為相似情境。