Https

HTTPS 的自定義錯誤頁面 (deny_info)

  • February 16, 2017

我的 squid.conf 中有以下 ACL,其中有一個名為 ERR_TJS 的自定義“錯誤頁面”文件,位於“/usr/share/squid/errors/English”:

acl tjs_sites url_regex "/etc/squid/sites_regex.acl"
acl tjs_domains dstdomain "/etc/squid/domains.acl"
http_access deny tjs_sites
http_access deny tjs_domains
deny_info ERR_TJS tjs_sites
deny_info ERR_TJS tjs_domains

特別是對於 ACL 文件“/etc/squid/domains.acl”,我有以下域:

flyordie.com
www.flyordie.com
king.com
www.king.com
miniclip.com
www.miniclip.com
kongregate.com
www.kongregate.com
clashroyale.com
www.clashroyale.com
facebook.com
www.facebook.com
instagram.com
www.instagram.com
snapchat.com
www.snapchat.com

問題是當向 Squid 執行 HTTPS 請求時,例如,不是為“ https://www.facebook.com ”提供自定義錯誤頁面,而是顯示瀏覽器發送的通用錯誤頁面,就像這個來自 Mozilla 火狐:

代理伺服器拒絕連接

Firefox 被配置為使用拒絕連接的代理伺服器。

檢查代理設置以確保它們是正確的。請聯繫您的網路管理員以確保代理伺服器正常工作。

我在 Squid 文件中找到了這些資訊:

未為 HTTPS 顯示自定義錯誤頁面

HTTPS 使用 HTTP CONNECT 消息通過代理進行中繼。由於處理這些 CONNECT 消息的瀏覽器行為(在https://bugzilla.mozilla.org/show_bug.cgi?id=479880中描述),代理生成的任何自定義錯誤頁面都會被忽略,而是顯示一個通用瀏覽器頁面。

通常此瀏覽器頁面會提及連接故障或其他此類不相關的詳細資訊。

事實上,除了 200 OK 之外的任何響應都會被瀏覽器完全丟棄,並顯示相同的瀏覽器模板頁面。當通過經過身份驗證的代理使用 HTTPS 以及與 407 消息正文相關的身份驗證方案時,這可能會導致一些非常奇怪的身份驗證問題。

我聽說用 Squid,你可以從 HTTP/HTTPS 連接中截取一些“狀態”,比如處理這些 CONNECT 消息。

**我的問題是:有沒有什麼方法可以應用我對 HTTPS 請求的自定義拒絕資訊,可能是操縱這些 CONNECT 消息,或者通過任何其他方法?**我怎樣才能做到這一點(請舉個例子)?

當瀏覽器配置為使用 HTTPS 代理時,它首先嘗試通過代理建立連接到遠端站點的隧道。除了“200 Tunnel Ready”之外,來自代理的任何 HTTP 響應都會被忽略,並導致“代理拒絕連接”錯誤。這可以通過首先解密連接然後按照您的配置拒絕訪問它來解決。請參閱https://docs.diladele.com/faq/squid/cannot_connect_to_site_using_https.html文章更詳細地描述這一點。

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