CentOS7 上 Squid 的 CA 證書問題
我正在管理一個在 CentOS 7(Diladele 設備)上執行 Squid 3.5.10 的公司 Web 代理,進行 SSL 碰撞,並且在將新 CA 證書添加到系統信任儲存時遇到了一些問題,這導致我們的使用者沒有能夠訪問他們應該能夠訪問的幾個受 SSL 保護的站點。其中一個網站是https://www.sexierdating.com/(是的,聽起來就是這樣,但我們的政策是不關心人們在午休期間上網的內容,只要它是合法的)。
來自 Squid 的錯誤消息很常見
X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
,這意味著由於某種原因 Squid 不信任或無法驗證目標伺服器證書。到目前為止,從 CA 的支持頁面獲取 PEM 格式的 CA 根證書,將其放入/etc/pki/ca-trust/source/anchors
、執行update-ca-trust
和重新啟動 Squid 就足以解決問題——但在我目前的情況下還不行。ca-certificates 軟體包是目前版本,因為我剛剛在機器上執行了整個 yum 更新。我目前遇到問題的所有域都有“Go Daddy Secure Certificate Authority - G2”證書。我從他們的支持頁面( https://certs.godaddy.com/repository/ )下載了每個證書,如上所述安裝它們,重新載入了 squid,但錯誤仍然存在。我什至用 strace 觀看了 update-ca-trust 以查看它是否真的拾取了正確的 PEM 文件 - 確實如此。
讓我有點奇怪的是 certs.godaddy.com 下載頁面似乎使用與一些有問題的域完全相同的根證書和中間證書,但該頁面通過 Squid 執行良好。當我比較 Firefox 中的證書時,我看不出整體規範和算法有任何差異,但仍然有一個有效,而另一些則無效。
我已經束手無策了,希望有人能在正確的方向上刺激我解決這個問題。我不能用 GoDaddy 證書為每一頁添加代理例外。
機器和瀏覽器上的 CA 儲存包括根 CA 證書。
網站永遠不應該從根 CA 那裡獲得證書,而應該從中介那裡獲得。
返回他們自己的證書和中介證書是網站的責任,因此瀏覽器可以將中介連結到它信任的根證書之一。
在您提供的網站範例中,它們不包括中間證書,因此您的使用者無法信任該網站。這可以通過此處的 ssllabs 掃描看到:https ://www.ssllabs.com/ssltest/analyze.html?d=www.sexierdating.com 。如您所見,它只發送一個證書而不是兩個證書,因此收到不完整的警告。展開 Certificate Paths 部分會顯示完整的鏈,如果您想安裝它,您可以下載此中介。
應該注意的是,瀏覽器通常會處理這種情況——要麼是因為它們會記憶體訪問其他站點的常見中間體,要麼是因為它會嘗試找到失去的中間體證書。因此,大多數使用者和站點運營商通常不會發現這些錯誤配置。在這裡猜測 ssl 碰撞對於處理這些錯誤並不是那麼友好。
這與發送完整鏈的certs.godaddycom ( https://www.ssllabs.com/ssltest/analyze.html?d=certs.godaddy.com ) 形成對比。事實上,它遇到了相反的問題,並且發送了太多證書,因為不需要發送根證書(但也許這是出於歷史原因,因為您可以看到有兩個證書鏈路徑 - 其中一個需要根證書由另一個證書籤名,該證書可能由在其信任儲存中沒有新根證書的舊瀏覽器使用)。
無論如何,您的選擇是:
- 告訴您的使用者是網站設置不正確,讓他們重新開始工作,不要再浪費公司時間查看不可靠的網站。
- 將中間證書添加到您的 Squid CA 根儲存。當然,這不是根 CA,不應該真正在商店中,如果它因任何原因被撤銷,您仍然會信任它(這是證書不是從根證書頒發的原因之一,因為它很難刪除他們來自信託商店)。因此,您通過包含此內容引入了安全風險。
- 聯繫網站並向他們解釋問題並要求他們解決問題。然後準備好對使用者想要的所有其他損壞站點進行基本故障排除!
毫無疑問,如果是我,我會選擇選項 1 :-)