TLS 检查概览

传输层安全协议 (TLS) 加密的网络流量占所有网络流量的很大一部分,而威胁行为者可以使用这些加密通道发起恶意攻击。因此,在将 TLS 加密流量转发到目的地之前,请务必先检查该流量。

安全 Web 代理提供 TLS 检查服务,让您可以拦截 TLS 流量、检查加密请求并强制执行安全政策。

根据已实施的安全规则和 TLS 检查配置,安全 Web 网关解决方案会建立两个安全连接,一个连接到客户端,另一个连接到外部服务器。然后,安全 Web 代理解决方案会检查这两个安全连接之间的流量。成功完成验证后,您可以对加密流量应用与对未加密流量相同的过滤和安全控件。

证书授权机构在 TLS 检查中的角色

为了确定安全 Web 代理是否应检查 TLS 连接,它会检查其各项安全政策规则中的 tls_inspection_enabled 标志。如果已设置该标志,并且检测到 TLS 连接,安全 Web 代理会生成新的服务器证书。它会将此证书发送到 Certificate Authority Service (CAS),以供您的从属证书授权机构 (CA) 池签署。然后,该证书将提供给客户端,并建立 TLS 连接。生成的证书会缓存一小段时间,以便在后续连接到同一主机时使用。

如果您想检查 TLS 流量,则必须为客户端尝试连接的主机生成服务器证书。此服务器证书必须由组织管理的私有 CA 签名。只有配置为信任此私有 CA 的客户端才会信任这些生成的服务器证书。其中包括浏览器和嵌入式 HTTP 客户端。因此,TLS 检查只能用于拦截和检查贵组织拥有管理控制权的客户端的 TLS 连接。

并非所有 TLS 连接都能成功拦截,即使在组织拥有管理控制权的机器上也是如此。这是因为某些客户端(尤其是嵌入在其他应用中的客户端)已硬编码为仅接受特定服务器证书或由特定 CA 签署的证书(此做法称为证书固定)。例如,Microsoft Windows、MacOS 和 Google Chrome 软件更新。在启用 TLS 检查的情况下,此类连接会失败。出现这种情况是因为安全 Web 代理向客户端呈现的服务器证书的密钥和 CA 链与本地存储的参数不匹配。

如果规则配置为检查 TLS 流量,但客户端不信任安全 Web 代理提供的检查证书,则连接会失败。在这些情况下,TLS 检查会破坏客户端-服务器连接,即使服务器是受信任的也是如此。如需解决此问题,您可以添加规则,以便针对特定条件绕过 TLS 检查。您还可以通过使用 FQDN 将 TLS 检查限制为特定目的地主机、来源(使用安全标记、服务账号或 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 用于为运行时生成的服务器证书签名。

  • 使用存储在外部(不在 CAS 中)的现有根 CA 为从属 CA 签名。当从属 CA 由根 CA 签名后,您可以使用它们为运行时生成的服务器证书签名。

  • 使用 CAS 中生成的根证书。创建根证书后,您需要创建由新根 CA 签名的从属 CA。该从属 CA 用于对运行时生成的服务器证书进行签名。

如需详细了解这些方法,请参阅创建从属 CA 池