Ssl

透明 SSL 代理的神話和事實

  • April 26, 2018

現在,我一直在尋找一種為 SSL(不是 Squid)設置透明代理的方法。一般的答案是我不能,但我知道有一些方法。我的目的只有以下幾點:

  1. 黑名單/白名單域名(不是 IP 號碼)。內容根本不會被過濾或修改。
  2. 強制使用者通過這些列表。如果我在網路瀏覽器中修改此類設置,他們可以撤消它。

以下頁面告訴我可以通過未修改的流量,但沒有說明如何: iptables https transparent proxy with privoxy?

以下頁面顯示了我自己無法使用的 443 的 iptables 規則: http ://alien.slackbook.org/dokuwiki/doku.php?id=slackware:proxy

以下頁面說明如何使其僅適用於 Squid: http ://www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

編輯:一個人在這裡說: 如何使用 IPTABLES 在 Squid 周圍創建 HTTPS (443) 直通? “對你來說最好的辦法是阻止直接訪問埠 443,並告訴你的使用者如果他們想使用 HTTPS,他們必須配置他們的瀏覽器以使用代理。” 但我只知道如何完全阻止 443,而不是讓它在代理下工作。

如果你想過濾域名,你有兩種可能的方法:你可以從客戶端發出的 CONNECT 方法中獲取名稱,如果它知道它必須使用 HTTPS 連接的代理並過濾那個(Squids 支持順便提一句)。或者,如果您真的需要透明 執行此操作,則需要查看(加密的)請求標頭。

如果要查看加密的請求標頭,則需要有一個密鑰。如果你想擁有一個密鑰,你需要一個證書,它是 a) 受客戶端信任的“正確”證書,並且 b) 證明每個可能的主機(萬用字元 - 一切)。

所以你需要做的是

  1. 為您的代理設置證書。這取決於您的軟體如何執行此操作 - 您可以使用stunnel在代理端終止 SSL 連接,在其後面有一些過濾 HTTP 代理,並使用 iptables DNAT 目標和 stunnel 為所有傳出流量重新建立 SSL。MitM SSL 代理也可能有“盒裝”解決方案。
  2. 在將使用代理的所有客戶端上安裝上述證書

大多數情況下,如果您需要透明代理,那是因為您不希望或無法重新配置客戶端以使用代理。如果您的請求也是這種情況,您可能無法選擇在客戶端上安裝證書並將其標記為“受信任”。因此,即使有一種透明 SSL 代理的技術方法,我懷疑不會為您贏得太多。

引用自:https://serverfault.com/questions/280796