mutual TLS (mTLS) 是一种身份验证类型,其中连接中的两方使用 TLS 协议相互验证。
阅读本文后,您将能够:
复制文章链接
mutual TLS 简称 mTLS,是一种相互身份验证的方法。mTLS 通过验证他们都拥有正确的私有密钥来确保网络连接两端的各方都是他们声称的身份。他们各自的 TLS 证书中的信息提供了额外的验证。
mTLS 通常被用于Zero Trust 安全框架*,以验证组织内的用户、设备和服务器。它也可以帮助让 API 保持安全。
*Zero Trust 意味着默认情况下不信任任何用户、设备或网络流量,这种方法有助于消除许多安全漏洞。
传输层安全 (TLS) 是互联网上广泛使用的一种加密协议。TLS 的前身是 SSL,在客户端-服务器连接中对服务器进行身份验证,并对客户和服务器之间的通信进行加密,以便外部各方无法窥视通信。
关于 TLS 的运作原理,需要了解三件重要的事情:
TLS 使用一种叫做公钥加密的技术运作,它依赖于一对密钥,即公钥和私钥。任何用公钥加密的内容都只能用私钥解密。
因此,一个服务器如果解密了用公钥加密的信息,就证明它拥有私钥。任何人都可以通过查看域或服务器的 TLS 证书来查看公钥。
TLS 证书是一个数据文件,其中包含用于验证服务器或设备身份的重要信息,包括公钥、证书颁发者声明(TLS 证书由证书颁发机构颁发)以及证书的到期日期。
TLS 握手是验证 TLS 证书和服务器拥有私钥的过程。TLS 握手还会确定握手结束后如何进行加密。
通常在 TLS 中,服务器有一个 TLS 证书和一个公钥/私钥对,而客户端没有。典型的 TLS 流程是这样运作的:
然而,在 mTLS 中,客户端和服务器都有一个证书,并且双方都使用它们的公钥/私钥对进行身份验证。与常规 TLS 相比,mTLS 中有一些额外步骤来验证双方(额外的步骤加粗显示)。
实施 mTLS 的组织充当其自己的证书颁发机构。这与标准 TLS 相反,标准 TLS 的证书颁发机构是一个外部组织,负责检查证书所有者是否合法拥有关联域(了解 TLS 证书验证)。
mTLS 需要“根”TLS 证书;这使组织能够成为他们自己的证书颁发机构。授权客户端和服务器使用的证书必须与此根证书相对应。根证书是自签名的,这意味着组织自己创建它。(这种方法不适用于公共互联网上的单向 TLS,因为必须由外部证书颁发机构颁发这些证书。)
mTLS 有助于确保客户端和服务器之间的流量是安全和可信的。这为登录到组织网络或应用程序的用户提供了一个额外的安全层。它还可以验证与不遵循登录过程的客户端设备的连接,如物联网 (IoT) 设备。
mTLS 可以防止各种类型的攻击,包括:
对于日常用途,单向身份验证提供了足够的保护。公共互联网上 TLS 的目标是:1) 确保人们不会访问欺骗性网站,2) 确保私有数据在通过包含互联网的各种网络时安全且加密,以及 3) 确保数据在传输过程中没有改变。客户端仅验证服务器身份的单向 TLS 足以实现这些目标。
此外,将 TLS 证书分发到所有最终用户设备将非常困难。生成、管理和验证为此所需的数十亿证书几乎是不可能的任务。
但在较小的规模上,mTLS 对单个组织非常有用且非常实用,尤其是当这些组织采用 Zero Trust 方法来确保网络安全时。由于 Zero Trust 方法默认不信任任何用户、设备或请求,因此组织必须能够在每次尝试访问网络中的任何时间对每个用户、设备和请求进行身份验证。mTLS 通过验证用户和验证设备来帮助实现这一点。
Cloudflare Zero Trust 使用 mTLS 实现 Zero Trust 安全。 Cloudflare API Shield 也使用 mTLS 来验证 API 端点,确保没有未经授权的各方可以发送潜在的恶意 API 请求。了解如何利用 Cloudflare 实施 mTLS。