HTTPS 與 TLS 實際運作原理:實用指南

Security2026-09-09TryQuickToolBox

你在瀏覽器中看過鎖頭圖示千百次,但你知道當你造訪一個 HTTPS 網站時,背後實際發生什麼事嗎?讓安全網頁瀏覽成為可能的協定是 TLS(傳輸層安全性),舊稱 SSL。了解 TLS 的實際運作不僅是學術探討——它能幫助你除錯設定問題、為自己的伺服器做出明智決策,並理解你每天依賴的安全保證。

問題:不安全的 HTTP

在 HTTPS 出現之前,HTTP 以明文傳送所有內容。網路路徑上的任何人——Wi-Fi 熱點、ISP、路由器——都能讀取你的密碼、Cookie 和個人資料。更糟的是,攻擊者可以在傳輸過程中修改內容,注入惡意軟體或假頁面。解決方案是加密資料並驗證伺服器身分。這正是 TLS 所做的事。

TLS 如何融入 HTTPS

HTTPS 只是 HTTP 在 TLS 連線上執行。TLS 協定位於應用層(HTTP)和傳輸層(TCP)之間。它提供三項核心服務:

但客戶端和伺服器如何協商加密金鑰並證明身分?這就是 TLS 握手 的工作。

TLS 握手逐步解說

當你造訪一個 HTTPS 網站時,你的瀏覽器和伺服器會執行握手——一系列建立安全工作階段的訊息。以下是現代 TLS 1.3 握手的簡化版本:

  1. ClientHello:客戶端發送訊息,列出支援的 TLS 版本、加密套件和一個隨機數。
  2. ServerHello:伺服器選擇一個加密套件並發送自己的隨機數。
  3. 伺服器憑證:伺服器發送其數位憑證,其中包含其公鑰和身分。
  4. 金鑰交換:使用伺服器的公鑰和類似 Diffie-Hellman 的技術,雙方計算出共享的祕密——工作階段金鑰。
  5. 完成:雙方發送加密訊息,確認一切就緒。從現在起,所有資料都以工作階段金鑰加密。

在 TLS 1.3 中,這只需一次來回,使連線比舊版更快。

憑證呢?

伺服器的憑證是由受信任的第三方——稱為 憑證頒發機構(CA)——發行的數位文件。它將公鑰綁定到網域名稱。你的瀏覽器會檢查憑證的有效性、到期日,以及是否由受信任的 CA 頒發。如果網域不符或憑證過期,你會看到警告。

要取得憑證,網站所有者使用 ACME 協定(通常搭配 Let's Encrypt 等工具)來證明他們控制該網域。CA 接著用自己的私鑰簽署憑證。這建立了從瀏覽器到 CA 再到網站的信賴鏈。

對稱加密 vs. 非對稱加密

TLS 使用兩種加密:

例如,RSA 常用於初始金鑰交換(雖然 TLS 1.3 偏好 Diffie-Hellman),而 AES-GCM 是大量資料的熱門對稱加密法。

加密套件:建構積木

加密套件是演算法的組合,定義握手和加密如何運作。例如,套件 TLS_AES_256_GCM_SHA384 代表:

設定伺服器時,你可以選擇啟用哪些加密套件。較舊的套件如 ECDHE-RSA-AES128-GCM-SHA256 仍然常見。目標是偏好提供前向保密的套件——意思是即使伺服器的私鑰日後被破解,過去的工作階段仍然安全。

以下是常見 TLS 版本的小比較:

版本發布年份主要特色狀態
TLS 1.22008SHA-256、AEAD 加密法廣泛支援
TLS 1.32018更快的握手、僅前向保密加密法建議使用
TLS 1.0/1.11999/2006舊版、弱已淘汰

常見陷阱及如何避免

即使啟用了 TLS,錯誤仍可能危及安全:

要測試伺服器的 TLS 設定,你可以使用線上掃描器,例如 SSL Labs 的 SSL Server Test(與我們無關)。它們會為你的設定評分並指出弱點。

使用 OpenSSL 除錯 TLS

有時你需要查看線路上的實際情況。openssl 命令列工具是你的好幫手。例如,要查看伺服器的憑證:

openssl s_client -connect example.com:443 -showcerts

這會輸出憑證鏈和其他詳細資料。你也可以測試特定的 TLS 版本:

openssl s_client -tls1_2 -connect example.com:443

如果你在排除無法連線的客戶端問題,這會顯示伺服器支援哪些協定和加密法。

為什麼 TLS 對你的網站很重要

除了安全性之外,HTTPS 是搜尋引擎的排名信號,也是許多現代瀏覽器功能(如地理位置和 service worker)的必要條件。如果你還沒遷移,現在就做吧。Let's Encrypt 等工具讓它免費又簡單。

一旦你使用 HTTPS,也應該考慮使用工具檢查 Web 伺服器的日誌是否有異常。例如,如果你執行 Nginx 伺服器,分析存取日誌可以幫助你發現重複的失敗握手或可疑請求。我們的 Nginx 日誌分析器 可以幫助你快速解析和理解那些日誌。

常見問題

SSL 和 TLS 有什麼不同?

SSL(安全通訊端層)是 TLS 的前身。所有 SSL 版本都已淘汰且不安全。TLS 是現代協定,其中 TLS 1.2 和 1.3 是目前的標準。人們常說「SSL」但意指「TLS」,但技術上它們是不同的。

瀏覽器如何驗證憑證?

瀏覽器使用頒發 CA 的公鑰檢查憑證的數位簽章。它還會驗證憑證未過期、網域相符,以及 CA 在其受信任的根憑證儲存庫中。如果任何檢查失敗,瀏覽器會顯示警告。

什麼是前向保密?

前向保密(或完美前向保密)是 ECDHE 等金鑰交換方法的特性。它確保即使伺服器的長期私鑰日後被破解,也無法推導出過去的工作階段金鑰,因此記錄的流量保持機密。TLS 1.3 強制要求前向保密的加密套件。

結論

HTTPS 和 TLS 不是魔法——它們是密碼學和信任的精心設計組合。透過了解握手、憑證和加密套件,你可以為自己的專案做出更好的決策,並自信地排除問題。保持你的協定更新、使用強大的加密套件,並始終測試你的設定。

準備好將知識付諸實踐了嗎?如果你管理 Nginx 伺服器,試試我們的 Nginx 日誌分析器,看看誰在連線你的網站,並在日誌中發現潛在的安全問題。