传输层安全协议(TLS)
TLS 对传输中的流量进行加密和认证。涵盖核心概念、加密套件与版本陷阱、检测与缓解。
快速解答
TLS 对传输中的流量进行加密和认证;采用 TLS 1.2+(优先 1.3),禁用弱加密套件和过时协议,并将证书验证失败视为交换数据前的停止条件。
定义
TLS 为网络流量提供机密性(加密)、完整性和认证,保护客户端与服务器之间传输中的数据。
它是什么
TLS 是保护传输中流量的标准协议。HTTPS 就是基于 TLS 的 HTTP。它通过加密提供机密性,通过 MAC 提供完整性,通过证书提供真实性(参见 security:pki)。
为什么重要
没有 TLS,凭据、Cookie(参见 security:http-sessions-cookies)和应用程序数据将以明文形式在网络上传输,从而被拦截和篡改。弱版本(SSLv3、TLS 1.0/1.1)和弱加密套件是已知的攻击面(例如 POODLE、BEAST)。
它如何工作
- 握手(Handshake):客户端和服务器协商协议版本和加密套件,通过其证书链认证服务器,并派生会话密钥。
- TLS 1.3(RFC 8446) 移除了传统加密套件和过时的密钥交换,缩短握手并减少攻击面。优先于 TLS 1.2 使用。
- 证书验证:对端必须出示到受信任根证书的证书链,且主机名必须与证书匹配(参见
security:pki)。
检测
- 之前仅 HTTPS 的端点降级为传统 TLS/明文。
- 无效/过期/不匹配的证书警告。
- 混合内容页面同时加载安全和不安全资源。
缓解
- 强制 TLS 1.2+,优先 1.3;禁用 SSLv3 和 TLS 1.0/1.1。
- 禁用弱加密套件和即将过期的签名算法(SHA-1)。
- 将 HTTP 重定向到 HTTPS 并设置 HSTS;在每个客户端中验证证书和主机名。
- 绝不为了”让它跑通”而禁用验证——这正是拦截攻击所利用的漏洞。
调查
对于疑似中间人或拦截事件,检查证书链、协议/版本协商日志,以及客户端固定的证书是否意外变更。参见 guides:tool-email-header-guide,了解如何在邮件头中查看 TLS 和发送 MTA 信任信息。