术语表

TLS (传输层安全协议)

最后核实

定义

TLS 是 IETF 制定的传输层安全协议,为 HTTPS 等网络连接提供加密、完整性保护和服务器身份认证,是 SSL 的继任者。

TLS(Transport Layer Security)是 SSL 的继任协议,位于 TCP 与 HTTP、SMTP、IMAP 等应用协议之间;QUIC 也复用了 TLS 1.3 的握手。连接建立时先进行 TLS 握手:双方协商协议版本和密码套件,服务器用 X.509 证书证明身份,再各自推导出会话密钥,之后的应用数据都被加密并带完整性校验。目前在用的版本是 TLS 1.2(RFC 5246,2008 年)和 TLS 1.3(RFC 8446,2018 年 8 月)。

为什么重要

在公共 Wi-Fi、运营商网络等不可信链路上,TLS 防止账号密码、Cookie、API Token 被窃听或篡改,证书认证则阻止攻击者冒充服务器。协议版本的选择直接影响安全:Chrome 84、Edge 84 和 Firefox 78 在 2020 年移除了 TLS 1.0/1.1,RFC 8996(2021 年 3 月)正式将其废弃。TLS 1.3 去掉了静态 RSA 密钥交换和非 AEAD 算法,所有连接都具备前向安全,完整握手也从两个往返减少到一个往返。配置服务器时,通常只需开启 TLS 1.2 和 TLS 1.3。

例子

检查服务器是否支持 TLS 1.3:

openssl s_client -connect example.com:443 -servername example.com -tls1_3 </dev/null

如果支持,输出中会显示 TLSv1.3 和协商出的密码套件;握手失败则说明服务器只支持更低的版本。

常见误区

  • 用了 TLS,别人就看不到我访问的是哪个网站。 目标 IP 仍然可见,而且在未启用 ECH 时,主机名会以明文出现在 SNI 扩展中。
  • 有 TLS 的网站就是可信的。 TLS 只证明你连上的是该域名证书的持有者,钓鱼网站同样可以申请证书。
  • TLS 1.2 已经不安全了。 只启用 ECDHE 密钥交换和 AEAD 密码套件的 TLS 1.2 仍被广泛接受,真正要淘汰的是 1.0/1.1 和老旧算法。

延伸阅读