让我们简要讨论一些重要的通信安全协议,如 SSL、TLS 和 mTLS。我想说,从 “大局” 系统设计的角度来看,这个主题不是很重要,但仍然值得了解。
SSL
SSL代表安全套接字层(Secure Sockets Layer),它指的是一种用于加密和保护互联网上发生的通信的协议。它最初是在1995年开发的,但此后一直被弃用,取而代之的是TLS(Transport Layer Security)。
如果不推荐使用,为什么称为SSL证书?
大多数主要的证书提供者仍然将证书称为 SSL 证书,这就是为什么命名约定仍然存在的原因。
为什么SSL很重要?
最初,网络上的数据是以明文传输的,任何人都可以在截获信息后阅读。创建 SSL 是为了纠正此问题并保护用户隐私。通过加密用户和 Web 服务器之间的任何数据,SSL 还通过防止攻击者篡改传输中的数据来阻止某些类型的网络攻击。
TLS
传输层安全(Transport Layer Security,TLS)是一种广泛采用的安全协议,旨在促进互联网通信的隐私和数据安全。TLS是从安全套接字层(SSL)加密协议演变而来的。TLS的主要用例是加密 Web 应用程序和服务器之间的通信。
TLS协议实现的功能主要有三个部分:
- 加密(Encryption):隐藏从第三方传输的数据。
- 身份验证(Authentication):确保交换信息的各方是他们声称的身份。
- 完整性(Integrity):验证数据未被伪造或篡改。
mTLS
双向 TLS 或 mTLS 是一种用于相互身份验证的方法。mTLS 通过验证双方都拥有正确的私钥,确保网络连接两端的各方都是它们声称的身份。他们各自TLS证书中的信息提供了额外的验证。
为什么要使用 mTLS?
mTLS 有助于确保客户端和服务器之间的双向通信安全可靠。这为登录到组织网络或应用程序的用户提供了额外的安全层。它还验证与不遵循登录过程的客户端设备(如物联网(IoT)设备)的连接。
如今,微服务或分布式系统通常在零信任安全模型中使用 mTLS 来相互验证。