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

Security2026-09-10TryQuickToolBox

您已經在瀏覽器中看過鎖頭圖示上千次了。您知道 HTTPS 是「安全的」,而 HTTP 則不安全。但當您的瀏覽器透過 HTTPS 連接到網站時,實際上發生了什麼?為何握手如此快速卻又如此複雜?為何安全專家不斷強調 TLS 不僅僅是加密?

本指南將深入解析 HTTPS 與 TLS 的真實運作機制,不拖泥帶水。讀完後,您將了解對稱與非對稱加密的差異、憑證為何重要,以及如何在自己的設定中發現常見的 TLS 陷阱。

HTTP 與 HTTPS:不只是多一個字母

HTTP(超文本傳輸協定)以明文傳送請求和回應。任何在網路路徑上的人——您的 ISP、Wi-Fi 竊聽者或遭入侵的路由器——都可以讀取所有內容:密碼、Cookie、個人訊息。

HTTPS 只是 HTTP 運行在稱為 TLS(傳輸層安全協定)的安全層之上。字母「S」代表安全,但真正的魔法在於 TLS 協定。TLS 做三件重要的事:

沒有 TLS,即使最好的應用層安全也毫無用處。攻擊者可以攔截登入請求,並在憑證到達您的伺服器之前竊取它們。

TLS 握手:數位介紹

當您造訪 HTTPS 網站時,您的瀏覽器和伺服器會執行 TLS 握手。這是一個快速的來回過程,用以建立加密參數。現代的握手(TLS 1.3)只需一個來回——通常使用者無法察覺。

以下是握手的簡化版本:

  1. ClientHello – 您的瀏覽器發送支援的 TLS 版本和加密套件清單。
  2. ServerHello – 伺服器選擇一個加密套件,並發送其憑證(包含其公鑰)。
  3. 憑證驗證 – 您的瀏覽器根據信任的憑證頒發機構(CA)檢查憑證。
  4. 金鑰交換 – 雙方使用非對稱加密(如 ECDHE)產生共用的工作階段金鑰。
  5. 完成 – 雙方確認握手完成,並切換到對稱加密。

握手至關重要,因為它建立了 共用秘密,而無需直接傳輸。這就是非對稱加密的優勢所在。

對稱加密與非對稱加密

TLS 中使用兩種主要類型的加密:

TLS 僅在握手期間使用非對稱加密來交換工作階段金鑰。一旦建立,所有資料都透過對稱加密(如 AES)傳輸,因為它快得多。

為什麼不對所有內容使用非對稱加密? 因為非對稱演算法在計算上昂貴——想像用 RSA 加密影片串流的每個位元組。那會慢得令人痛苦。

憑證與憑證頒發機構

憑證就像是網站的數位身分證。它將網域名稱綁定到公鑰。但為何您的瀏覽器應該信任該金鑰?這就是憑證頒發機構(CA)的作用。

CA 是受信任的第三方,在驗證網域擁有者後頒發憑證。您的瀏覽器內建了受信任的根 CA 清單。當伺服器出示其憑證時,您的瀏覽器會檢查:

  1. 憑證是否有效(未過期)?
  2. 是否由受信任的 CA 簽署?
  3. 網域名稱是否與憑證相符?

如果任何檢查失敗,您的瀏覽器會顯示警告。這個系統稱為 信任鏈。

自簽憑證繞過了這個鏈。它們對測試很有用,但會在瀏覽器中觸發警告。對於生產環境,您需要來自公認 CA(或來自 Let's Encrypt 的免費憑證)的憑證。

工作階段金鑰如何被保護

握手中最關鍵的時刻是金鑰交換。在 TLS 1.3 中,最常見的方法是 橢圓曲線 Diffie-Hellman 短效(ECDHE)。它允許雙方計算出相同的工作階段金鑰,而無需透過網路發送。

這裡有一個簡化的比喻:想像兩個人在混合油漆。每個人選擇一個秘密顏色,分享一個公共顏色,然後混合。結果的混合物是相同的,但竊聽者無法逆向工程出秘密顏色。

ECDHE 還提供 前向保密,這意味著即使伺服器的私鑰後來被洩露,過去的會話仍然安全。這就是為什麼 TLS 1.3 要求使用短效金鑰交換。

為何 TLS 1.3 很重要

較舊的版本(TLS 1.0、1.1)有已知的漏洞,並已被棄用。TLS 1.2 仍然常見,但需要仔細設定。TLS 1.3 於 2018 年發布,提供:

如果您運行伺服器,請以 TLS 1.3 為目標,並回溯至 1.2。除非您要支援舊版用戶端,否則避免使用低於 1.2 的任何版本。

常見誤解

讓我們澄清一些迷思:

如何驗證 TLS 設定

作為開發人員或系統管理員,您應該定期檢查您的 TLS 設定。使用像 openssl 這樣的工具或線上掃描器。一個快速的命令列測試:

openssl s_client -connect example.com:443 -tls1_3

這會顯示協商後的協定、加密套件和憑證詳細資訊。請檢查:

啟用 HTTPS 的實用技巧

如果您是第一次設定 HTTPS,這裡有一個實用檢查清單:

  1. 從受信任的 CA 取得憑證(Let's Encrypt 是免費且自動化的)。
  2. 設定您的網頁伺服器(Nginx、Apache 等)使用 TLS 1.2 和 1.3。
  3. 使用 301 重定向將所有 HTTP 流量重定向到 HTTPS。
  4. 啟用 HSTS(HTTP 嚴格傳輸安全)以強制瀏覽器使用 HTTPS。
  5. 自動續期憑證(大多數工具會這樣做)。

對於 Nginx,一個最小的 HTTPS 伺服器區塊看起來像:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    root /var/www/html;
}

記得在變更後測試您的設定。

HTTPS 在 SEO 中的角色

除了安全性之外,HTTPS 是搜尋引擎的排名信號。Google 已確認 HTTPS 是一個輕量級的排名因素。它還建立使用者信任——瀏覽器將 HTTP 網站標記為「不安全」。

如果您要從 HTTP 遷移到 HTTPS,請更新您的內部連結、canonical 標籤和站點地圖。使用 301 重定向以保留連結權益。

常見問題

SSL 和 TLS 之間有什麼區別?

SSL(安全通訊端層)是較舊且已棄用的協定。TLS(傳輸層安全協定)是其後繼者,具有改進的安全性和效能。如今,「SSL」通常被口語化使用,但所有現代系統都使用 TLS。

HTTPS 可以被駭嗎?

沒有加密是無法破解的,但如果正確設定,TLS 非常強大。攻擊通常針對弱實作,例如過時的協定、錯誤設定的憑證或用戶端漏洞——而不是 TLS 本身。

為什麼我的瀏覽器顯示憑證警告?

這通常表示憑證已過期、不受信任或與網域不符。也可能是自簽憑證。切勿忽略這些警告——它們可能表示存在中間人攻擊。

結論

HTTPS 和 TLS 是安全網路通訊的骨幹。了解它們的運作方式有助於您正確設定伺服器、診斷問題,並理解每個鎖頭圖示背後看不見的保護。

如果您正在處理憑證檔案或需要測試您的 TLS 設定,您可以使用 Nginx 日誌分析器 來發現伺服器日誌中的 TLS 相關錯誤——這是稽核您的 HTTPS 部署時一個方便的工具。