如何使用 Squid 明確代理程式重定向 Https CONNECT 請求

如何使用 Squid 明確代理程式重定向 Https CONNECT 請求

我想阻止我的內部網路的某些用戶的某些網址。我正在使用基於魷魚的顯式代理和重定向程式來實現此目的。客戶端配置為對 https url 使用 pac 文件,這使得它們將其 https 請求路由到明確代理。

問題是,將 https url 的任何 CONNECT 請求重定向到被封鎖的頁面 url 都會失敗。我嘗試了基於 http 和 https 的被封鎖頁面 URL,但沒有找到任何運氣。由於某些原因,我不想使用帶有 ssl 碰撞的透明代理。

  1. Safari 出現錯誤「Safari 無法開啟該頁面」。錯誤是「透過 Web 代理伺服器建立安全隧道時出現問題」'

  2. Chrome 給予錯誤「此網頁無法使用」。 ERR_TUNNEL_CONNECTION_FAILED'。

這是 access.log 中的一行https://www.yahoo.com

07/Oct/2015:01:41:29 -0500 74 172.0.0.9 TCP_REDIRECT/302 253 連線 www.yahoo.com:443 - HIER_NONE/- -

我在某處讀到瀏覽器期望在連接請求後啟動 SSL/TLS 握手,這就是它失敗的原因。這是來自魷魚重定向器文件的 qoute。

“URL 更改,特別是重定向只能在某些方法上進行,而某些方法(例如 POST 和 CONNECT)需要特別小心。”

它並不是說 CONNECT 方法不能進行重定向。但是,沒有任何地方提到我們如何重定向 POST 和 CONNECT(我對 CONNECT 特別感興趣)或給出任何範例。

請指導我如何將 https 連線請求重新導向到被封鎖的頁面。如果這是不可能的,是否可以透過顯式代理解決此問題?謝謝。

我在 ubuntu 上使用魷魚 3.5.4。

答案1

不幸的是,如果不先破壞(解密)SSL 連接,這是不可能的。瀏覽器在設計上會拒絕來自失敗的 CONNECT 請求的任何額外負載/重定向。有關更正式的描述,請參閱 -http://docs.diladele.com/faq/squid/cannot_connect_to_site_using_https.html

如果你如果決定執行SSL 解密,則可以先讓CONNECT 請求成功,然後阻止/重定向透過此已建立的連接隧道發出的下一個HTTP 請求- 請考慮到,如果某些應用程式使用CONNECT 代理隧道,則可能不是HTTP他們自己的協定(例如 Skype)。

還有一點要記住 - 如果應用程式在向代理程式發出 CONNECT 請求時使用「SSL pinning」技術 - 它將拒絕使用解密的連線。

相關內容