Squid 未将 SSL 重定向为 HTTP

Squid 未将 SSL 重定向为 HTTP

我希望所有到特定域的流量都通过父代理发送,这是我的 squid 配置:

acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access allow manager localhost
http_access allow localhost
http_access allow localnet
http_access deny manager
http_access deny !Safe_ports
http_access deny all
http_access allow localnet
http_access allow localhost
http_access deny all

http_port 3128

hierarchy_stoplist cgi-bin ?

coredump_dir /var/spool/squid

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

cache_peer XXX.XXX.XXX.XXX  parent 3128 0 no-digest
cache_peer_domain XXX.XXX.XXX.XXX .srv-get-my-ip.com

所以http://ip.srv-get-my-ip.com通过代理发送成功,返回结果为Current Address: XXX.XXX.XXX.XXX

1444889588.794    599 192.168.0.12 TCP_MISS/200 522 GET http://ip.srv-get-my-ip.com/ - FIRSTUP_PARENT/XXX.XXX.XXX.XXX text/html

https://ip.srv-get-my-ip.com未通过代理发送,因为它返回我的 ip Current Address: YYY.YYY.YYY.YYY

1444889762.199    154 192.168.0.12 TCP_MISS/200 6654 CONNECT ip.srv-get-my-ip.com:443 - HIER_DIRECT/AAA.AAA.AAA.AAA -

我怎样才能让 squid 以与第一个查询相同的方式处理第二个查询?

结果在这里很重要,所以如果有人可以使用除 squid 之外的其他代理(apache、haproxy 或其他)实现相同的目标,我会尝试一下!

谢谢!

答案1

按照你描述的方式代理 SSL 是可以的,但是需要[1] 您拥有 SSL 证书。

这是一个功能,而不是错误,因为它可以防止针对 SSL 的中间人攻击。

如果您拥有证书,那么大多数反向代理都可以为您工作。例如,您可以配置 squid 以终止 SSL 连接,然后重新建立与父代理的连接。请参阅Squid https 文档

还请注意该页面:

HTTPS 的设计初衷是满足用户的隐私和安全期望。在未经用户同意或知情的情况下解密 HTTPS 隧道可能会违反道德规范,并且在您的管辖范围内可能是违法的。

NginxApache 流量服务器HAProxy,Apache httpd 与mod_proxy以及其他几个反向代理都能够为您执行 SSL 终止。

[1] 如果您可以容忍不安全的 HTTPS,或者(也许更有趣的是)如果您能够控制客户端中的受信任证书,则有例外。但是……这条路上隐藏着危险。

相关内容