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 棺材上的最後一顆釘子。