代理可以充当中间人的唯一方法(假设客户端和服务器正确地实现了 SSL/TLS 协议的完整版本,并且证书颁发机构正确地完成了他们的工作)是您的浏览器信任代理。这是因为在连接开始时,客户端会验证另一个端点是否具有由公认的证书颁发机构生成的有效证书。
客户端和服务器之间可能存在代理。这在企业网络中很常见,例如,内部主机和 Internet 之间通常没有直接连接。但是代理只能来回交换字节。它无法知道,更不用说修改内容。它可以知道您连接到哪个 IP 地址,但不知道您正在浏览哪个 URL。
那么会出什么问题呢?如果您的浏览器识别出愿意签署的 CA 是proxy.example.com客户端尝试连接的服务器,则proxy.example.com可以自己连接到服务器,并且客户端的连接可能会被明显或透明地重定向到代理。那么代理就是中间人。
一些企业网络将所有客户端配置为信任企业自己的证书颁发机构,并强制使用重写所有 SSL 连接的代理。然后,客户端会看到每个站点都具有由企业 CA 签名的证书。由于所有证书都具有有效签名,因此您在日常使用中不会注意到这一点。找出是否发生这种情况的方法(假设浏览器本身没有被篡改,只有它的证书列表)是检查谁签署了特定的证书,或者浏览受信任的证书颁发机构列表。