公司的 SSL 代理服务器如何工作?

信息安全 tls 代理人
2021-08-31 20:35:21

例如,许多公司使用网络代理来拦截基于 Web 的流量。

我对它们的功能有一些疑问:

1) 我从未在公司看到过 SSL 警告。我怀疑他们是否将受信任的证书从他们的代理安装到操作系统中(因为浏览器可能使用不同的证书存储,例如Firefox有它自己的)。那么他们如何在没有浏览器警告的情况下拦截流量呢?

2)假设他们将代理证书安装到每个主机中。如果主机想要访问https://google.com,证书中的主机名将是代理的主机名,而不是 google。因此,无论如何,都应该出现 SSL 警告。他们是否生成由受信任的证书代理签名的证书(例如带有google主机名)?

2个回答

我从未在公司看到 SSL 警告

您是否确认 SSL 拦截已完成?请参阅如何检查我是否有与网站的直接 SSL 连接?.

那么他们如何在没有浏览器警告的情况下拦截流量呢?

SSL 拦截代理在代理和原始目标服务器之间创建一个 SSL 连接,并在代理和客户端之间创建另一个 SSL 连接。后一个连接将使用代理 CA 签署的证书。到目前为止,它是典型的 SSL 中间人攻击,攻击和“合法”拦截之间的唯一区别是客户端系统已明确信任代理 CA,因此它也会信任使用代理 CA 签名的证书。

我怀疑他们是否将受信任的证书从他们的代理安装到操作系统中(因为浏览器可能使用不同的证书存储,例如 Firefox 有它自己的)。

如果您对不同的浏览器有不同的 CA 存储,则需要将代理 CA 导入所有这些存储。

如果主机想访问“ https://google.com ”,证书中的主机名将是代理的主机名,而不是 google

不会。证书的主题将是原始主机名(即 google.com)。但此证书将由代理 CA 而不是原始 CA 签名。由于客户端信任代理 CA 并且主机名与证书匹配,因此不会出现警告。

代理的实际实现可能因组织而异。在将公司的证书导入每个主机以消除 SSL 错误的实现中,您可能正在谈论深度数据包检查。下一代防火墙(如Palo Alto)支持这一点,但同样,这只是在他们进行数据包检查时。

代理服务器不需要进行 SSL 解密,它们只是传递请求(和加密的内容)而不对有效负载执行任何分析。这通常不会生成 SSL 警告。