GnuTLS無法連上部分台灣網站的問題

TL;DR - 請看最後一段的workaround。


今天台大計中的SSLVPN client pulse-secure升級到9.0r2.0了,我更新完之後測了一下,發現連登入的頁面都連不上

"Unacceptable TLS certificate"

於是開始了一番debug...

由於這個錯誤訊息在pulse-secure的檔案裡沒有,因此懷疑是WebKitGTK的問題。用ceiba-dl測了一下,果然是這樣。

把source code們拿出來探究一番,從WebKitGTK,libsoup,glib-networking,最後到GnuTLS和p11-kit...

經過追查,確認是當年TWCA提交給Mozilla的證書有問題,而GnuTLS檢查過於嚴格,才導致連線失敗。

(詳細技術內容可參考我回報給GnuTLS的issue)

這次感想有兩點:

  1. 第一次看到一個certificate chain裡的intermediate CA同時也是個root CA的,腦筋有點轉不太過來
  2. 台灣廠商不EY(?)

Workaround很簡單,把TWCA Global Root CA從mozilla.trust.p11-kit這個檔案移除,再跑一遍sudo trust extract-compat就好了。

social