透明 SSL 代理的神话和事实

Ter*_*ior 8 ssl https iptables transparent-proxy

我已经搜索了很多小时关于为 SSL(不是 Squid)设置透明代理的方法。一般的答案是我不能,但我知道有一些方法。我的目的只有以下几点:

  1. 黑名单/白名单域名(不是 IP 号码)。内容根本不会被过滤或修改。
  2. 强制用户通过这些列表。如果我在 Web 浏览器中修改此类设置,他们可以撤消它。

以下页面告诉我可以不加修改地传递流量,但它没有说明如何: iptables https 透明代理与 privoxy?

以下页面显示了 443 的 iptables 规则,我自己无法使用它:http : //alien.slackbook.org/dokuwiki/doku.php?id=slackware : proxy

以下页面介绍了如何使其仅适用于 Squid:http : //www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

编辑:这里有人说: 如何使用 IPTABLES 在 Squid 周围创建 HTTPS (443) 直通? “对您来说,最好的办法是阻止对端口 443 的直接访问,并告诉您的用户,如果他们想使用 HTTPS,他们必须将浏览器配置为使用代理。” 但我只知道如何完全阻止 443,而不是让它在代理下工作。

the*_*bit 7

如果你想过滤域名,你有两种可能的方法:你可以从客户端发出的 CONNECT 方法中获取名称,如果它知道它必须使用代理进行 HTTPS 连接并过滤那个(Squids 支持顺便提一句)。或者,如果你真的 真的需要透明地做到这一点,你需要考虑的(加密)请求头。

如果要查看加密的请求标头,则需要有一个密钥。如果你想拥有一个密钥,你需要一个证书,它 a) 被客户端信任为“正确”的证书,并且 b) 证明每个可能的主机(通配符 - 一切)。

所以你需要做的是

  1. 为您的代理设置证书。这取决于您的软件如何做到这一点 - 您可以使用stunnel来终止代理端的 SSL 连接,在其背后有一些过滤 HTTP 代理,并使用 iptables DNAT 目标和 stunnel 重新为所有传出流量重新建立 SSL。MitM SSL 代理也可能有“盒装”解决方案。
  2. 在将要使用代理的所有客户端上安装上述证书

大多数情况下,如果您需要透明代理,那是因为您不想或无法重新配置客户端以使用代理。如果您的请求也是这种情况,您可能无法选择在客户端上安装证书并将它们标记为“受信任”。因此,即使存在透明 SSL 代理的技术方法,我怀疑您也不会获得多少收益。