我想阻止某些内部networking的某些用户。 我正在使用一个基于squid的显式代理用于这个目的与一个redirect_program。 客户端被configuration为使用https的urls的pac文件,这使得他们将https请求路由到显式代理。
问题是,将https url的任何CONNECT请求redirect到阻止的页面url失败。 我尝试了基于http和https的阻止页面url,但找不到任何运气。 由于某些原因,我不想使用ssl bumping的透明代理。
Safari提供错误“Safari无法打开页面。 错误是“通过Web代理服务器build立安全隧道时出现问题”
Chrome提供错误“此网页不可用。 ERR_TUNNEL_CONNECTION_FAILED”。
这里是https://www.yahoo.com的 access.log的一行。
07 / Oct / 2015:01:41:29 -0500 74 172.0.0.9 TCP_REDIRECT / 302 253 CONNECT www.yahoo.com:443 – HIER_NONE / – –
我在某处读到浏览器希望在连接请求后启动SSL / TLS握手,这就是为什么它失败。 这是一个来自鱿鱼redirect文件的qoute。
“只有某些方法可以进行URL更改,特别是redirect,而某些方面,如POST和CONNECT,需要特别注意。
对于CONNECT方法,并没有说redirect是不可能的。 但是,没有提到我们如何redirectPOST和CONNECT(我对CONNECT特别感兴趣)或者给出了任何示例。
请指导我如何将https连接请求redirect到阻止的页面。 如果这是不可能的,是否有明确的代理工作呢? 谢谢。
我在ubuntu上使用squid 3.5.4。
不幸的是,这是不可能的,如果不先冲突(解密)SSL连接。 浏览器devise拒绝任何额外的负载/redirect失败的CONNECT请求。 有关更正式的描述,请参阅http://docs.diladele.com/faq/squid/cannot_connect_to_site_using_https.html 。
如果您决定执行SSL解密,则可以先让CONNECT请求成功,然后通过build立的连接隧道阻止/redirect下一个HTTP请求 – 请注意,如果某些应用程序使用CONNECT,甚至可能不是HTTP代理隧道为自己的协议(例如Skype)。
还有一点要记住 – 如果应用程序在使用CONNECT请求代理时使用“SSL固定”技术,它将拒绝使用解密的连接。