![如何通过 squid 透明转发 HTTPS 流量?](https://linux22.com/image/682544/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20squid%20%E9%80%8F%E6%98%8E%E8%BD%AC%E5%8F%91%20HTTPS%20%E6%B5%81%E9%87%8F%EF%BC%9F.png)
我想将所有 HTTP 和 HTTPS 流量重定向到squid
充当透明代理。然后,这些流量将在特定时段被阻止或授权(批量)。具体来说,我不想解密/重新加密 HTTPS 流量,而是将其按原样推送。
HTTP 部分起作用,REDIRECT
规则将shorewall
所有发往目标端口的流量传输80
到模式下的监听3128
squid 端口transparent
。
对于端口,同样的技巧443
不起作用。
有教程关于如何为 HTTPS 流量设置透明代理,但我发现的所有方法都描述了创建证书对来解密/重新加密流量——这是我不想做的事情。
这鱿鱼 维基提到 CONNECT 是一种传输 HTTPS 流量的方式,但添加http_access allow CONNECT all
到配置中(并禁用默认值deny
)不会改变任何内容。
然后一些以前的 答案这表明,如果不破坏 TLS 隧道,透明的 HTTPS 流量是不可能的。
因此:有没有办法配置squid
,以便通过它重新路由的 HTTPS 流量iptables
可以透明地传输,而无需进行任何修改?
(当满足某些时间规则时,我最终会进行阻止(也就是说,阻止不会基于 HTTPS 流本身中的任何内容))
答案1
但我发现所有这些都描述了创建证书对来解密/重新加密流量——这是我不想做的事情。
由于 https 协议的工作方式,您要求的功能根本无法实现。您的选择包括:
- 允许通过防火墙传出 https,并且不要尝试使用任何代理
- 配置客户端以使用您的代理/过滤器,它们将使用 HTTP CONNECT 调用代理。
- 将您的代理设置为中间人,然后执行 sslbump。
当满足某些时间规则时,我最终会阻止
你可以用正确的iptables 模块根据一天中的时间进行过滤。也许你应该只在防火墙中处理一天中的时间过滤?