使用 squid 实现透明代理和 HTTPS

使用 squid 实现透明代理和 HTTPS

是否可以使用透明代理来过滤某些域,而无需中间人方法?我想保证证书验证和用户隐私,另一方面,我想拒绝与某些域的连接。

透明代理可以吗?squid3 可以吗?

答案1

透明代理,顾名思义,就是中间人代理。客户端不知道代理的存在,并将其请求作为 TCP SYN 发送到基于 SSL 的站点,发送到目标端口 443。

如果您明确指定代理,客户端将使用动词CONNECT(因为它知道正在使用代理),Squid 访问控制列表 (ACL) 可以对其采取行动。

没有透明代理可以在没有中间人的情况下可靠地应用访问控制。您所能期望的最好结果就是根据目标 IP 地址采取行动,坦率地说,这只会让您头疼,因为您需要不断维护 IP 列表。

答案2

正如 Evan Anderson 在他的回答中所说,如果您在浏览器中手动设置代理,那么它们会让 HTTPs 通过代理(使用 CONNECT 请求),并且由于这些请求中的主机名是未加密发送的,您将能够对其应用 ACL。

但是,目前没有任何强制客户端使用您的代理的功能,因此虽然您无法使其透明,但您可以直接阻止所有直接 HTTP/HTTPS 连接并告诉您的用户,如果他们想要浏览网页,则应该使用代理。

答案3

我们已经使用 SNI 实现了带有 Squid 缓存的 HTTPS 过滤。它在透明 SSL 模式下运行良好。ACL 也已实现。我们已将 Squid 盒与 Cisco ASA 集成为 WCCP 服务器,并且已投入生产。

相关内容