SSL(安全套接层)和 TLS(传输层安全)都是加密互联网连接的协议。实际区别是:所有 SSL 版本都已弃用且不安全。TLS 才是今天真正保护网络的协议。 当人们说”SSL 证书”时,他们指的是用于 TLS 的证书。
如果你来这里是想知道是否需要做什么——跳到你需要做什么。
快速对比
| SSL | TLS | |
|---|---|---|
| 全称 | Secure Sockets Layer | Transport Layer Security |
| 创建者 | Netscape(1994) | IETF(1999) |
| 最新版本 | SSL 3.0(1996) | TLS 1.3(2018) |
| 状态 | ⛔ 所有版本已弃用 | ✅ TLS 1.2 和 1.3 活跃使用中 |
| 已知漏洞 | POODLE、BEAST、CRIME、DROWN | 无(TLS 1.3)、少量可缓解(TLS 1.2) |
| 性能 | 较慢(2+ 往返) | TLS 1.3:1-RTT 握手 |
| 前向保密 | 可选(很少使用) | TLS 1.3 中强制 |
| 密码套件 | 弱(RC4、DES、出口密码) | 强(AES-GCM、ChaCha20) |
| 消息认证 | MAC 使用 MD5/SHA-1 | HMAC 使用 SHA-256+ |
| 浏览器支持 | 已从所有浏览器移除 | 通用 |
完整版本历史
| 年份 | 协议 | 发生了什么 |
|---|---|---|
| 1994 | SSL 1.0 | 由 Netscape 设计。从未发布——发布前内部发现严重缺陷。 |
| 1995 | SSL 2.0 | 首次公开发布。被早期 HTTPS 站点使用。很快发现有重大漏洞(弱 MAC、易受截断攻击)。 |
| 1996 | SSL 3.0 | Paul Kocher + Netscape 完全重新设计。广泛部署 18 年。被 POODLE 攻击破解(2014 年 10 月)。IETF 于 2015 年 6 月弃用(RFC 7568)。 |
| 1999 | TLS 1.0 | IETF 标准化的协议,基于 SSL 3.0。小幅改进。存在 BEAST 攻击漏洞(2011)。2021 年 3 月弃用(RFC 8996)。 |
| 2006 | TLS 1.1 | 修复了 BEAST 漏洞。为 CBC 密码添加了显式 IV。与 TLS 1.0 一起于 2021 年 3 月弃用。 |
| 2008 | TLS 1.2 | 重大升级。添加了 AEAD 密码(AES-GCM),从握手中移除了 MD5/SHA-1,添加了签名算法协商。仍被广泛使用且安全(正确配置时)。 |
| 2018 | TLS 1.3 | 当前标准(RFC 8446)。移除所有遗留算法,1-RTT 握手,前向保密强制,加密握手。代表根本性重设计。 |
关键时刻:
- 2014 年 10 月: Google 发现 POODLE 漏洞——SSL 3.0 无法修复,必须放弃
- 2015 年 6 月: IETF 正式弃用 SSL 3.0(RFC 7568)
- 2021 年 3 月: IETF 弃用 TLS 1.0 和 1.1(RFC 8996)
- 2020-2021: 所有主流浏览器移除对 TLS 1.0/1.1 的支持
为什么我们仍说”SSL”
“SSL”这个术语延续下来是因为它先出现。Netscape 于 1994 年创造了它,到 1999 年 TLS 取代它时,“SSL”已经是常用词汇。如今:
- “SSL 证书” = 用于 TLS 的证书(不是 SSL)
- “SSL/TLS” = 涵盖两个术语的说法
- 产品名称中的”SSL” = 营销,不是实际协议
- “免费 SSL” = 免费的 TLS 证书
GetHTTPS、Certbot、Let’s Encrypt、ZeroSSL——它们都为 TLS 连接签发证书,即使名称或营销说的是”SSL”。证书本身是 X.509 格式,适用于任何 TLS 版本。
本文使用”SSL 证书”的方式与行业相同:指用于 TLS 的证书。
重要的技术差异
密码套件
SSL 依赖的算法现在已被证明是不安全的:
| 算法 | 使用于 | 状态 |
|---|---|---|
| RC4 | SSL 2.0, 3.0 | 已破解——RFC 7465 禁止使用 |
| DES, 3DES | SSL 2.0, 3.0 | 已破解/弃用 |
| MD5 | SSL 握手 | 碰撞攻击已被证实 |
| 出口密码 | SSL(美国政策) | 故意弱化(40/56 位密钥) |
| AES-GCM | TLS 1.2, 1.3 | ✅ 当前标准 |
| ChaCha20-Poly1305 | TLS 1.2, 1.3 | ✅ 适合移动端/ARM |
TLS 1.3 将密码套件列表缩减为仅 5 个选项——全部安全。TLS 1.2 有 37+,其中一些是弱的。TLS 1.3 的简洁性意味着更少的错误配置空间。
握手速度
| SSL 3.0 | TLS 1.2 | TLS 1.3 | |
|---|---|---|---|
| 完整握手 | 2+ 往返 | 2 往返 | 1 往返 |
| 恢复会话 | 1 往返 | 1 往返 | 0-RTT(第一条消息即发送数据) |
| 实际延迟 | 60-120ms | 40-80ms | 20-40ms |
TLS 1.3 的 0-RTT 恢复意味着回访者可以立即发送加密数据——完全无握手延迟。
前向保密
前向保密意味着每个连接使用唯一密钥。即使有人窃取了服务器的私钥,也无法解密过去的对话。
- SSL 3.0: 不支持前向保密
- TLS 1.0-1.2: 支持(通过 ECDHE)但也允许 RSA 密钥交换(无前向保密)
- TLS 1.3: 强制——RSA 密钥交换被完全移除
消息认证
- SSL: 使用 MAC 配合 MD5 或 SHA-1——现在都被认为是弱的
- TLS: 使用 HMAC 配合 SHA-256 或更强——无已知弱点
你需要做什么
对大多数网站运营者:可能什么都不用做。 如果你:
- 有有效的 SSL/TLS 证书(来自 Let’s Encrypt 或任何 CA)
- 使用相当现代的 Web 服务器(Nginx 1.13+、Apache 2.4.37+、IIS 10)
- 没有在配置中显式禁用 TLS 1.2/1.3
…那你已经在使用 TLS。你的”SSL 证书”自动与 TLS 1.2 和 1.3 配合工作——相同的 .pem 文件服务于两种协议。
需要验证一点: 确保你的服务器上 TLS 1.0 和 1.1 已被禁用。它们自 2021 年起已弃用。
Nginx:
ssl_protocols TLSv1.2 TLSv1.3;
Apache:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
如何检查当前 TLS 版本:
# Shows which TLS version is negotiated
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep "Protocol"
# Expected: TLSv1.2 or TLSv1.3
在线工具: SSL Labs Server Test 会准确显示你的服务器支持哪些协议。
TLS 1.3 采用率
截至 2026 年初,62% 的网站支持 TLS 1.3。所有主流浏览器都支持。如果你的服务器是最新的,你可能已经有 TLS 1.3。
开箱即支持 TLS 1.3 的服务器(无需特殊配置):
- Nginx 1.13+(配合 OpenSSL 1.1.1+)
- Apache 2.4.37+(配合 OpenSSL 1.1.1+)
- Caddy(所有版本——始终使用最新 TLS)
- Cloudflare(自动)
- AWS ALB/CloudFront(自动)
未来方向:后量子密码学
TLS 的下一个重大发展是后量子密钥交换——防御未来可能破解当前密钥交换算法(ECDHE、RSA)的量子计算机。Google Chrome 和 Cloudflare 已开始在 TLS 1.3 中试验混合密钥交换(经典 + 后量子)。
这不需要新证书——变化在密钥交换机制,不在证书格式。你的 Let’s Encrypt 证书在后量子 TLS 到来时仍将工作。
常见问题
TLS 和 SSL 需要不同的证书吗?
不需要。同一张证书适用于任何 TLS 版本。“SSL 证书”和”TLS 证书”指的是同一个 X.509 文件。当你从 GetHTTPS 获取证书时,它适用于 TLS 1.2 和 1.3——无需特殊配置。
TLS 1.2 还安全吗?
安全。使用 AEAD 密码套件(AES-GCM 或 ChaCha20-Poly1305)的 TLS 1.2 适用于生产环境。TLS 1.3 更好(更快、更简单、强制前向保密),但 TLS 1.2 仍然安全。推荐配置是 TLSv1.2 TLSv1.3。
应该只强制 TLS 1.3 吗?
目前不建议。约 38% 的站点不支持 TLS 1.3,一些旧客户端(企业环境、嵌入式设备、Java 8)可能只支持 TLS 1.2。今天放弃 TLS 1.2 会锁定一些合法用户。同时支持两者。
“SSL 证书”会停止工作吗?
不会。尽管名称如此,“SSL 证书”是适用于任何 TLS 版本的 X.509 证书。名称是历史遗留。只要 CA 受信任且证书未过期,你的证书将继续工作。
HTTPS 和 SSL 或 TLS 一样吗?
HTTPS 是 HTTP + TLS。它是将 TLS 加密应用于 HTTP 连接的结果。当你访问 https://example.com 时,浏览器使用 TLS 协议加密 HTTP 流量。HTTPS 不是独立于 TLS 的协议——它是运行在 TLS 隧道内的 HTTP。
什么是 POODLE 攻击?
POODLE(Padding Oracle On Downgraded Legacy Encryption)由 Google 于 2014 年 10 月发现。它利用了 SSL 3.0 的 CBC 密码填充中的缺陷。攻击允许同一网络上的攻击者解密加密流量的单个字节。由于缺陷在协议设计中(不是特定实现),SSL 3.0 无法修补——必须完全放弃。这是 SSL 棺材上的最后一颗钉子。