為什麼 SSL 與 TLS 常被混用?
若你接觸過 Web 安全,會發現「SSL」與「TLS」幾乎被當成同一件事。「SSL 憑證」其實是 TLS 憑證。「SSL 檢查工具」檢查的是 TLS。「SSL 交握」是 TLS 交握。混淆無所不在。
簡單說:SSL 已死,但名字留了下來。
SSL(Secure Sockets Layer) 是 1990 年代中期 Netscape 為 Web 加密的原始協定。TLS(Transport Layer Security) 於 1999 年取代 SSL。每個 SSL 版本都因嚴重、可利用的安全漏洞而被廢止,現代伺服器與瀏覽器均已停用。但在 SSL 退役時,它已成為「網頁加密」的通稱——產業詞彙從未完全更新。
今天任何人說「SSL 憑證」或「SSL 連線」,指的幾乎都是 TLS。X.509 憑證格式未變;變的是協定。憑證內含與連線如何運作,見 什麼是 SSL 憑證?開發者指南。
歷史:從 SSL 到 TLS
| 版本 | 年份 | 狀態 | 說明 |
|---|---|---|---|
| SSL 1.0 | 從未釋出 | 放棄 | 內部發現嚴重缺陷,從未上市 |
| SSL 2.0 | 1995 | 已廢止(RFC 6176,2011) | 首個公開版;加密設計弱、協定缺陷 |
| SSL 3.0 | 1996 | 已廢止(RFC 7568,2015) | 易受 POODLE(2014)攻擊;各地已停用 |
| TLS 1.0 | 1999 | 已廢止(RFC 8996,2021) | 易受 BEAST、TLS 版 POODLE 影響;PCI-DSS 2018 年起禁用 |
| TLS 1.1 | 2006 | 已廢止(RFC 8996,2021) | 相對 1.0 小幅修正;2021 年一併廢止 |
| TLS 1.2 | 2008 | 現行——廣泛支援 | SHA-256、現代 cipher suites;多數流量仍以此為基線 |
| TLS 1.3 | 2018 | 現行——建議優先 | 交握更快、強制前向保密、移除舊式演算法 |
今日你的伺服器幾乎一定協商 TLS 1.2 或 TLS 1.3。更舊版本預設停用,或被瀏覽器與客戶端主動阻擋。
技術差異:SSL 與 TLS
SSL 3.0 與 TLS 1.0 非常接近——TLS 1.0 早期草案內部稱為「SSL 3.1」。隨 TLS 成熟,差異變大:
| 特性 | SSL 3.0 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|
| 訊息驗證 | MD5/SHA-1(弱) | HMAC-SHA-256(強) | 僅 AEAD cipher(更強) |
| 交握往返次數 | 2 次 RTT | 2 次 RTT | 1 次 RTT(可 0-RTT 恢復連線) |
| 前向保密(Forward secrecy) | 不支援 | 可選(ECDHE/DHE cipher suites) | 所有連線強制 |
| 舊式 cipher | RC4、DES、出口級加密 | 若啟用仍可能選到弱 cipher(危險) | 規格中已移除所有舊 cipher |
| 支援的憑證類型 | 僅 RSA | RSA + ECDSA | RSA + ECDSA + EdDSA |
什麼是前向保密?
前向保密(亦稱 Perfect Forward Secrecy, PFS)表示:即使攻擊者現在錄下所有加密流量,日後取得你伺服器的私密金鑰,仍無法解密過去的流量。每個 TLS 工作階段都會產生新的短效加密金鑰,不儲存、不重複使用。
沒有前向保密:攻擊者現在錄流量、日後偷到私密金鑰,即可解密一切——這是所有 SSL 年代的現實。有前向保密:即使私密金鑰日後外洩,過去工作階段仍安全。TLS 1.3 對每條連線強制前向保密。
擊垮 SSL 的漏洞
SSL 不是因「過時」而廢止,而是被具體、公開展示的攻擊打垮:
POODLE(2014)
POODLE(Padding Oracle On Downgraded Legacy Encryption)利用 SSL 3.0 區段加密填補(padding)。能坐在使用者與伺服器之間並注入 JavaScript 的攻擊者,可強制 TLS 連線降級到 SSL 3.0,再以 padding oracle 逐位元組解密工作階段 Cookie。實務上:同網路攻擊者可竊取已驗證工作階段。
修正方式是完全停用 SSL 3.0——無法打補丁。2014–2015 年所有瀏覽器與伺服器營運商皆停用 SSL 3.0。
BEAST(2011)
BEAST(Browser Exploit Against SSL/TLS)利用 TLS 1.0(承自 SSL)CBC 模式缺陷。能對受害者瀏覽器注入 JavaScript 並觀察加密流量的攻擊者,可逐步還原明文——主要是 HTTP Cookie,導致工作階段劫持。BEAST 推動產業走向 TLS 1.2,並加速 TLS 1.0 廢止。
DROWN(2016)
DROWN 顯示:若任何伺服器——即使是另一台——共用同一組 RSA 私密金鑰且仍支援 SSL 2.0,攻擊者可用該弱點解密主要伺服器的 TLS 1.2 工作階段。自認已完全遷移到 TLS 的組織,仍可能因共用金鑰而暴露。
🔒 今日意涵: 若伺服器正確設定為僅 TLS 1.2 或 1.3,即不受上述攻擊影響。請用 Authgear SSL 檢查工具 確認實際協商的協定版本。
TLS 1.2 與 TLS 1.3:該升級嗎?
正確設定的 TLS 1.2 仍廣用且安全。TLS 1.3 在設計上更快、更安全:
- 交握更快——TLS 1.3 將交握從 2 次 RTT 減為 1 次,在高延遲行動網路尤其有感。
- 0-RTT 恢復——回訪連線可在交握完成前送出應用資料,但需權衡重放攻擊風險。
- 不再協商舊演算法——TLS 1.3 從規格移除所有弱 cipher;不像 TLS 1.2 若設定不慎仍可能啟用弱套件。
建議設定: 同時支援 TLS 1.2 與 TLS 1.3,其餘全部停用。現代客戶端皆支援 TLS 1.3,但部分舊企業系統與 IoT 仍僅支援 TLS 1.2。
# Nginx:支援 TLS 1.2 與 1.3,停用更舊版本
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
如何檢查伺服器協商的 TLS 版本
選項 1:Authgear SSL 檢查工具(無需設定)
Authgear SSL 檢查工具 會在完整憑證資訊旁顯示伺服器協商的 TLS 協定版本。不確定伺服器用哪一版?跑一遍 SSL 檢查——TLS 版本、cipher suite 與憑證細節會一併呈現。
選項 2:OpenSSL
# 檢視協商的 TLS 版本(在輸出中找 "Protocol")
openssl s_client -connect yourdomain.com:443
# 強制使用 TLS 1.3
openssl s_client -connect yourdomain.com:443 -tls1_3
# 強制使用 TLS 1.2
openssl s_client -connect yourdomain.com:443 -tls1_2
# 確認舊版已停用(以下應失敗或拒絕連線)
openssl s_client -connect yourdomain.com:443 -tls1 # TLS 1.0 — 應失敗
openssl s_client -connect yourdomain.com:443 -tls1_1 # TLS 1.1 — 應失敗
驗證與安全中的 TLS
對驗證系統而言,TLS 是所有上層機制依賴的傳輸層安全:
- 權杖安全——OAuth access token、JWT bearer token、工作階段 Cookie 若以 HTTP 傳送會完全暴露;實務上靠 TLS 才讓權杖式驗證安全可行。
- OAuth 2.0 要求 TLS——OAuth 2.0 規格(RFC 6749)規定授權端點與權杖端點必須使用 TLS。沒有 HTTPS 就沒有 OAuth。
- mTLS(雙向 TLS)——標準 TLS 僅伺服器出示憑證;mTLS 下客戶端亦出示憑證,實現密碼學上的客戶端驗證。用於服務網格、零信任網路與高安全 API。Authgear 企業部署支援 mTLS。
- 憑證釘選(Certificate pinning)——行動 App 有時「釘選」特定憑證或公開金鑰,若伺服器出示不同憑證即拒絕連線,可防 MITM 即便 CA 遭入侵;但憑證續約規劃需格外謹慎。
摘要:SSL 與 TLS
- SSL 已廢止——SSL 2.0 與 3.0 在所有現代軟體中均已停用。
- 你實際使用的是 TLS——TLS 1.2 與 TLS 1.3 為現行標準。
- 憑證格式相同——無論稱 SSL 或 TLS 憑證,X.509 格式不變;名稱沿用,協定已演進。
- 設定為 TLS 1.2 + 1.3,停用更舊版本——2026 年建議的正式環境設定。
- TLS 1.3 更快、更乾淨——與 TLS 1.2 並行啟用,在安全與相容性間取得最佳平衡。
下一步
- 用免費 Authgear SSL 檢查工具 檢查你的 TLS 版本
- 在 什麼是 SSL 憑證?開發者指南 了解憑證內容
- 在 SSL 憑證鏈:是什麼、如何修復中斷的鏈 診斷鏈結問題