加密与安全通信

TLS/SSL

约 4 分钟阅读

什么是 TLS/SSL

TLS (Transport Layer Security) 是一种用于加密互联网通信的协议。SSL (Secure Sockets Layer) 是其前身,由于存在安全漏洞已被弃用,但习惯上仍常使用"SSL"或"SSL/TLS"的称呼。

浏览器地址栏中显示的锁形图标和 HTTPS 前缀表示 TLS 正在保护通信。如果没有 TLS,密码和信用卡号等数据将以明文形式在网络上传输,容易被窃听。

TLS 的工作原理 - 握手过程

TLS 通信以"握手"过程开始。

  1. Client Hello:客户端向服务器发送支持的 TLS 版本和密码套件列表。
  2. Server Hello:服务器选择密码套件,并将数字证书 (包含公钥) 发送给客户端。
  3. 密钥交换:双方通过公钥加密安全地生成共享会话密钥。在 TLS 1.3 中,ECDHE (椭圆曲线 Diffie-Hellman 临时密钥) 是强制要求的。
  4. 加密通信:后续所有数据使用共享会话密钥通过 AES 等对称加密算法进行加密。

TLS 1.3 将握手从 2-RTT 缩减为 1-RTT,显著提升了连接速度。还支持 0-RTT 重连,使之前连接过的服务器几乎可以零延迟恢复通信。

TLS 1.3 的变化

TLS 1.3 (RFC 8446,2018 年制定) 不是简单的小版本更新,而是对协议设计的根本性重构。

废弃的密码套件
移除了 RC4、3DES、CBC 模式等不安全算法。仅允许 AEAD (带关联数据的认证加密) 密码。
强制前向保密
废除了静态 RSA 密钥交换。现在必须使用临时密钥交换 (ECDHE),即使服务器私钥泄露,过去的通信也无法被解密。
加密握手
在 TLS 1.2 中,服务器证书以明文发送。在 TLS 1.3 中,证书被加密,防止窃听者识别目标服务器。
简化协议
移除了许多遗留功能,减少了攻击面。规范本身更加简洁,降低了实现错误的可能性。

证书类型与选择

  • DV (域名验证):仅验证域名所有权。可通过 Let's Encrypt 免费获取。适合个人网站和博客。几分钟即可签发。
  • OV (组织验证):还验证组织的真实存在。企业网站常用。签发需要数天,需提交注册文件。
  • EV (扩展验证):最严格的验证,包括法律存在和实际地址。以前会显示绿色地址栏,但主流浏览器已取消这一视觉区分。相比 DV 的实际优势已减弱。

加密强度不取决于证书类型。DV、OV、EV 都使用相同的 TLS 加密。区别仅在于对域名运营者身份的验证级别。

Let's Encrypt 与证书自动管理

Let's Encrypt 于 2016 年正式推出,是一个免费的证书颁发机构,通过 ACME (自动证书管理环境) 协议实现了证书的自动签发和续期。目前,Web 上约 30% 的 TLS 证书由 Let's Encrypt 签发。

ACME 协议通过 HTTP-01 或 DNS-01 验证自动确认域名所有权,证书在数秒内即可签发。由于证书有效期为 90 天,使用 certbot 等工具进行自动续期至关重要。

Let's Encrypt 的普及大幅降低了 HTTPS 的采用门槛。但由于 DV 证书仅验证域名所有权,无法阻止钓鱼网站获取证书。不应仅凭锁形图标就信任一个网站。

TLS 配置验证方法

可以使用以下工具验证服务器的 TLS 配置是否安全。

  • SSL Labs (ssllabs.com):Qualys 提供的免费在线测试。从 A+ 到 F 进行评级,全面检查支持的协议、密码套件、证书链和已知漏洞 (BEAST、POODLE、Heartbleed 等)。
  • testssl.sh:开源命令行工具。适用于测试无法公开访问的内部服务器。在 Linux/macOS 上运行。
  • 浏览器开发者工具:在 Chrome 中,点击锁形图标 →"连接是安全的"→"证书有效",可查看 TLS 版本、密码套件和证书详情。

建议在每次服务器配置变更后运行 SSL Labs,确认评级为 A 或以上。

常见误解

SSL 和 TLS 是不同的技术
TLS 是 SSL 的后继协议。SSL 3.0 之后制定了 TLS 1.0,目前使用的是 TLS 1.2/1.3。"SSL 证书"这一称呼只是历史习惯,实际上是 TLS 证书。
HTTPS 就意味着绝对安全
HTTPS 保证的是通信通道的加密,但连接的网站本身是否安全是另一回事。钓鱼网站也使用 HTTPS,因此不应仅凭锁形图标就信任网站。

TLS 1.2 与 TLS 1.3 对比

TLS 1.2

2008 年制定。2-RTT 握手。支持大量密码套件 (部分安全性较低)。前向保密为可选项。

TLS 1.3

2018 年制定。1-RTT 握手。仅限安全密码套件。前向保密为强制要求。支持 0-RTT 重连。

分享

相关术语