传输层安全 (TLS) 加密的网络流量占所有网络流量的很大一部分,威胁行为者可以使用这些加密通道发起恶意攻击。因此,在将经过 TLS 加密的流量转发到其目的地之前,务必要检查该流量。
安全 Web 代理提供了 TLS 检查服务,可让您拦截 TLS 流量、检查加密的请求以及强制执行安全政策。
根据已实现的安全规则和 TLS 检查配置,安全 Web 代理解决方案会建立两个安全连接:一个与客户端的连接,另一个与外部服务器的连接。然后,安全 Web 代理解决方案会检查两个安全连接之间的流量。成功验证后,您可以对加密流量应用与未加密流量相同的过滤和安全控件。
证书授权机构在 TLS 检查中的作用
为了确定安全 Web 代理是否应检查 TLS 连接,它会检查各项安全政策规则上的 tls_inspection_enabled
标志。如果已设置该标志,并且检测到 TLS 连接,则安全 Web 代理会生成新的服务器证书。它会将此证书发送到证书授权机构服务 (CAS),以由从属证书授权机构 (CA) 池进行签名。然后将此证书提供给客户端,并建立 TLS 连接。生成的证书会缓存一小段时间,以便在与同一主机的后续连接中使用。
如果要检查 TLS 流量,您必须为客户端尝试连接的主机生成服务器证书。由组织管理的私有 CA 必须对此服务器证书进行签名。只有配置为信任此私有 CA 的客户端才会信任这些生成的服务器证书。其中包括浏览器和嵌入式 HTTP 客户端。因此,TLS 检查只能用于拦截和检查贵组织有权控制的客户端的 TLS 连接。
并非所有 TLS 连接都可以被成功拦截,即使在组织拥有管理控制的计算机上也是如此。这是因为,某些客户端(尤其是嵌入到其他应用中的客户端)经过硬编码,仅接受特定的服务器证书或由特定 CA 签名的服务器证书(此过程称为“证书固定”。例如 Microsoft Windows、MacOS 和 Google Chrome 软件更新。如果存在 TLS 检查,此类连接将失败。之所以发生这种情况,是因为安全 Web 代理向客户端出示的公钥和服务器证书的 CA 链与本地存储的参数不匹配。
如果规则配置为检查 TLS 流量,但客户端不信任安全 Web 代理提供的检查证书,则连接失败。在这种情况下,即使服务器可信,TLS 检查也会中断客户端与服务器的连接。如需解决此问题,您可以添加规则,针对特定条件绕过 TLS 检查。您还可以将 TLS 检查限制为特定目标主机(使用 FQDN)、来源(使用安全标记、服务帐号或 IP 地址)以及使用规则的 SessionMatcher
属性。
支持的功能
安全 Web 代理 TLS 检查支持以下功能:
- 与 CAS 紧密集成;CAS 是面向私有 CA 的高可用性、可伸缩代码库。
- 能够根据需要使用自己的信任根。您还可以使用现有的根 CA 为 CAS 持有的从属 CA 签名。如果您愿意,可以在 CAS 中生成新的根证书。
- 通过在安全 Web 代理政策规则中使用
SessionMatcher
实现精细的解密标准。此条件包括网址列表、正则表达式、IP 地址范围和类似表达式中存在的匹配主机。如果需要,您可以使用布尔表达式将条件与布尔表达式结合使用。 - 每项安全 Web 代理政策都可以使用自己的 TLS 检查政策和 CA 池进行配置。此外,多项安全 Web 代理政策可以共用一项 TLS 检查政策。
常见使用场景
如需启用 TLS 检查,您可以使用以下任一方法:
使用现有的根 CA 为 CAS 中的从属 CA 签名。CAS 中保存的从属 CA 用于对在运行时生成的服务器证书进行签名。
使用在外部保留的现有根 CA(而非 CAS)为从属 CA 签名。当从属 CA 由根 CA 签名时,您可以使用它们对在运行时生成的服务器证书进行签名。
使用在 CAS 中生成的根证书。创建根证书后,您可以创建一个由新的根 CA 签名的从属 CA。该从属 CA 用于对在运行时生成的服务器证书进行签名。
如需详细了解这些方法,请参阅创建从属 CA 池。