由于我对 HTTPS 的了解有限,我开始疑惑:代理服务器如何过滤 HTTPS 网站?我的意思是,添加代理服务器本质上是一种 MITM 攻击,而 HTTPS 明确应该阻止这种攻击
我能想到的唯一方法是通过 IP 和端口阻止服务器。但是对于信噪比和通配符证书这意味着您可以阻止合法内容(假设必须被阻止的站点与在这种情况下必须可用的站点共享 IP)。
那么它会做什么呢?由于连接内容已加密,因此您无法读取该内容;您唯一知道的是,某人很可能正在向某个 IP 地址发送 HTTPS 请求。
答案1
代理服务器如何过滤 HTTPS 网站?
这并不容易。你有几个糟糕的选择,每个选择都有自己的问题。
您可以仅根据通过 HTTP CONNECT 请求传递的 NAME/IP 来执行此操作。这意味着您可能会得到大量误报/漏报。
您可以执行 MITM 攻击。在公司环境中使用几个产品时,会设置 CA,并且必须得到客户端的信任,代理服务器会根据需要创建证书,以便客户端相信一切正常。代理必须验证用户连接的站点的证书。这也意味着,如果站点没有有效的 SSL 证书,那么客户端可能完全不可能继续访问该站点。我怀疑,如果您这样做,您遇到法律问题的可能性也会更大。
也可以在客户端机器上运行过滤器,但是除非客户端机器真的被锁定,否则这可能不会很好地发挥作用。
然而,有了 SNI 和通配符证书,你就有可能屏蔽合法内容
如果您确实需要过滤 SSL,您几乎肯定需要将其作为白名单而不是黑名单来执行。因此,您可以允许信任的站点,并阻止不良站点。
答案2
浏览器知道它正在连接到代理,它并没有真正被“愚弄”。您可以设置被动代理,但如果代理不只是原封不动地路由流量,浏览器在第一次访问加密 URL 时仍然会知道代理在那里。通常,与代理服务器的连接要么始终加密,要么始终未加密,无论代理和浏览器配置为哪种。
如果您指的是反向代理,即代理充当目标服务器并代理(通常用于性能、故障转移或负载平衡功能)到后端服务器;代理必须使用 SSL 信息进行特殊配置才能欺骗浏览器。此信息将特定于目标,它不能只是模仿任何目标服务器。有了这些,后端服务器和代理之间的连接以及浏览器和客户端之间的连接可能都经过加密,但不一定,并且它们不一定依赖于另一个(尽管某些代理可以配置为这样)。
不管哪种情况,代理都必须由您的网络或目标网络配置。代理将知道正在传递的内容,但不涉及第三方,只是对原始双方的扩展。