跳至主要內容
Skip to content

安全與證書:證書指紋與本機開發技巧

WebTransport 強制要求 TLS 加密。在本機開發時,獲得受信任的憑證(CA)往往很麻煩。本章我們將學習使用 證書指紋 (Certificate Hashes) 來解決這個痛點。


一、 為什麼 WebTransport 的安全這麼硬?

WebTransport 繼承了 QUIC 的特性,加密是協議的一部分:

  1. 無明文模式:所有數據傳輸必須經過加密。
  2. 嚴格校驗:瀏覽器預設拒絕未受信任或過期的憑證。

二、 解決方案:serverCertificateHashes

WebTransport 規範提供了一個後門:允許客戶端在連線時,提供伺服器憑證的 SHA-256 指紋。只要匹配,瀏覽器就會無視該憑證是否受信任。

本機測試步驟

  1. 生成自簽憑證:使用 OpenSSL (期限須小於 14 天)。
  2. 提取指紋:轉換為 Base64 字串。
  3. Javascript 調用
javascript
const transport = new WebTransport('https://localhost:4433', {
  serverCertificateHashes: [{
    algorithm: 'sha-256',
    value: Uint8Array.from(atob(FINGERPRINT_B64), c => c.charCodeAt(0))
  }]
});

總結

透過證書指紋,我們能靈活地在本地環境測試 HTTP/3 應用,而不必煩惱憑證簽發問題。

下一章,我們將進行硬核對比:實測 WebTransport 如何消除 HOL Blocking。


️ 進階挑戰

為什麼 WebTransport 官方要把自簽署憑證的有效期限制在 14 天 這麼短?這與網路安全中的「證書釘扎 (Certificate Pinning)」風險有什麼關聯?


延伸閱讀與資源

← 上一章:多流管理 | 返回專題首頁 | 下一章:性能對比實驗