我在 Ubuntu 10.04.4 中设置了一个透明代理,其中 firehol 和 tinyproxy 可以很好地用于 http,但我无法让它用于 https。
直接连接到 tinyproxy 可以正常工作,因为以下命令可以正常完成:
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 的完整配置文件。请注意,除了透明代理之外,我对使用 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
答案1
据我所知,tinyproxy 根本不支持传入的 HTTPS 连接。它将允许您使用连接方法,但为了使用该方法,浏览器/客户端必须知道它正在与代理服务器对话,并使用正确的连接方法。
该ConnectPort
指令只是定义允许连接哪些端口。
唯一支持透明代理 HTTPS 连接的 FOSS 产品是乌贼,并且对它的支持相对较新。它还引入了一些相当严重的安全问题,因为透明 HTTPS 代理必须执行中间人攻击并解密连接,以便知道要连接到什么。