我在Ubuntu 10.04.4中有一个透明的代理设置,使用firehol和tinyproxy可以正常工作,但是我无法让它工作在https上。
连接到tinyproxy直接工作正常,因为以下命令完成OK:
env http_proxy=localhost:8888 curl http://www.google.com env https_proxy=localhost:8888 curl https://www.google.com
HTTP透明代理也工作正常:
curl http://www.google.com
但是当使用https直接访问google时,该命令只是挂起:
curl https://www.google.com
这里是firehol和tinyproxy的完整configuration文件。 请注意,我没有兴趣使用firehol除了透明的代理。
firehol.conf:
transparent_proxy "80 443" 8888 proxy interface any world client all accept server all accept
tinyproxy.conf(除上游代理以外的所有默认设置):
User nobody Group nogroup Port 8888 Timeout 600 DefaultErrorFile "/usr/share/tinyproxy/default.html" StatFile "/usr/share/tinyproxy/stats.html" Logfile "/var/log/tinyproxy/tinyproxy.log" LogLevel Info PidFile "/var/run/tinyproxy/tinyproxy.pid" MaxClients 100 MinSpareServers 5 MaxSpareServers 20 StartServers 10 MaxRequestsPerChild 0 ViaProxyName "tinyproxy" ConnectPort 443 ConnectPort 563 upstream corporate.fire.wall:8080
据我所知tinpenroxy根本不支持传入的HTTPS连接。 它将允许您通过使用CONNECT方法来访问HTTPS站点,但要使用它,浏览器/客户端必须知道它正在与代理服务器通话,并使用正确的连接方法。
ConnectPort指令只是定义允许连接的端口。
唯一支持透明代理HTTPS连接的FOSS产品是Squid ,对此的支持是相对较新的。 还介绍了一些非常重要的安全问题,因为透明HTTPS代理必须执行中间人攻击并解密连接,以便知道连接到哪个连接。