Squid http 代理服务器上的 HTTPS

Squid http 代理服务器上的 HTTPS

我有许多服务器,我希望它们在通过互联网发出请求时具有相同的 IP。因此,我配置了一个 Squid HTTP 代理服务器,它可以很好地处理 HTTP 请求。问题是它不适用于 HTTPS 请求(我的服务器的实际 IP 出现了...)。

你有解决方案吗?

答案1

您需要使用 Squid 的 SSL Bump 功能才能过滤 HTTPS。实现此功能的一种简单方法是使用代理服务器因为它默认启用了 SSL Bump 功能。

如果你想将它添加到你现有的配置中,你可以研究它这里

边注 :SSL 的开发部分是为了向连接方保证他们正在连接到他们期望连接的服务。拦截此传输(这正是您要实现的目标)将破坏 HTTPS 的完整性并向您的客户端发出证书警告。这可以通过向所有客户端分发受信任的证书来缓解,但是这里存在道德问题,因为您实际上是在窃听客户端认为是安全的流量。

答案2

现在我的 ssl-bump 规则已设置完毕,并且运行正常:

http_port 3128
http_port 3129 intercept
https_port 3130 intercept ssl-bump connection-auth=off generate-host-certificates=on dynamic_cert_mem_cache_size=8MB cert=/etc/squid/ssl/squid.pem key=/etc/squid/ssl/squid.key cipher=ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:AES128-SHA:RC4-SHA:HIGH:!aNULL:!MD5:!ADH
sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/squid_ssl_db -M 8MB
sslcrtd_children 50 startup=5 idle=1
ssl_bump server-first all
ssl_bump none localhost

然后只需将 HTTP 和 SSL 代理都设置为服务器和端口 3128。

答案3

如果您只想通过静态 IP 转发请求,则基本 squid 配置(不带 ssl_bump)应该可以正常工作。

您可以按照以下方式结合 ACL 规则和身份验证使用它:

https_port 8443 cert=/etc/certs/proxy-fullchain.pem key=/etc/ssl/private/proxy.key

因此我可以通过代理服务器发出请求:

curl --proxy https://user:[email protected]:8443 https://target.example.com

如果您需要拦截连接以根据其内容应用规则,那么您需要拦截 SSL 拦截

相关内容