You are currently viewing HTTPS 初學者指南

HTTPS 初學者指南

介紹

當您將購物商品新增到電子商務網站的購物車並結帳時,它會詢問你的付款方式。這時您填入您的信用卡,而不加考慮。但為什麼?你怎麼知道有人沒有窺探監視你的網路並讀取你所有的敏感信息?您可能會說不必擔心,因為 HTTPS 可確保您的連接安全。但是怎麼做?讓我們來了解一下。

詞彙表

在我們深入了解 HTTPS 如何保護您的連接之前,這裡有一些您應該在非常高的層次上理解的術語。

HTTP

超文本傳輸協議 (HTTP) 是用於通過 Internet 傳輸數據的最常用協議。HTTPS 是 HTTP 的安全版本。雖然涵蓋此協議本身需要單獨的文章,但這篇文章應該會有所幫助。

非對稱加密

這涉及兩個密鑰:公鑰和私鑰。通常,公鑰是免費分發的,私鑰是保密的。這兩個鍵在數學上是相關的。雖然我們不會涉及數學複雜性,但您應該知道以下內容:

  1. 用公鑰加密的數據可以用私鑰解密
  2. 私鑰可以對文檔進行數位簽名,公鑰可以驗證數字簽名是否有效並確認文檔沒有被更改。數位簽名除了驗證文檔的完整性外,還證明了公鑰對應的私鑰的所有權。只有相應私鑰的所有者才能簽署其有效性由您擁有的公鑰確定的文檔。這是極其重要的一點。

對稱加密

這是一種簡單的加密形式,使用單個密鑰。用於加密數據的相同密鑰也可用於解密數據。

對稱加密比非對稱加密更快,主要有兩個原因:

  1. 它使用比非對稱加密(1024 和 2048 位是常見的密鑰長度)短得多的密鑰(128 或 256 位密鑰是常見的)
  2. 它在加密過程中使用更簡單的數學運算,如乘法或 XOR,而非對稱加密使用複雜的運算,如冪和模數。

X.509 證書

X.509 證書是用於證明公鑰所有權的證書。它包含一堆關於它被發佈到的實體的信息(包括實體的公鑰)。該證書還包括由證書頒發機構 (CA) 的私鑰簽名的數位簽名,該證書頒發機構驗證所提供的信息確實正確。SSL 證書本質上是 X.509 證書。

SSL/TLS 握手

了解了關鍵術語後,現在讓我們關注發出 HTTPS 請求時會發生什麼。當您在瀏覽器(例如​​ Google Chrome)中輸入https://honeststore.com.tw時,它如何在 URL 旁邊顯示鎖定符號?

這是答案:

  1. 客戶端(您的瀏覽器)向嘗試與之通信的服務器(託管與 honeststore.com.tw 對應的 HTML 文件的機器)發送一個 hello 請求。在這個 hello 消息中,它發送
    • 支持的 TLS 版本,
    • 支持的加密算法(密碼套件)
    • 一串隨機字節(客戶​​端隨機
  2. 服務器響應以下內容:
    •  SSL 證書,
    • 選擇的密碼套件
    • 一串隨機字節(服務器隨機
  3. 客戶端驗證服務器的 SSL 證書(這可能是最有趣的部分,將在下一節中詳細介紹)
  4. 在驗證服務器確實是它所說的使用者之後,客戶端使用服務器的公鑰(從其 SSL 證書中獲得)並使用它來加密另一個隨機字節字符串(premaster secret)。只有服務器的私鑰才能解密它。因此,任何窺探監視的人都無法理解它。
  5. 服務器解密預主密鑰。現在,服務器和客戶端使用客戶端隨機數、服務器隨機數和預主密鑰來獲得會話密鑰。這些密鑰啟用對稱加密。
  6. 客戶端發送使用會話密鑰加密的“完成”消息
  7. 收到此消息後,服務器還會發送使用會話密鑰加密的“已完成”消息
  8. 溝通現已完成,客戶端和服務器使用會話密鑰對稱加密數據以用於其餘通信。

如您所見,第 4 步和第 5 步構成了使用服務器的公鑰和私鑰的非對稱加密。接下來的步驟和其餘的數據交換,都構成對稱加密(更快)。

現在,讓我們詳細關注第 3 步。客戶端如何驗證服務器的 SSL 證書?

SSL 證書驗證

如上所述,SSL 證書是 X.509 證書。如果在您的瀏覽器(以 Google Chrome 為例)上點擊鎖定圖標,然後點擊“連接安全”選項,您將看到“證書有效”文本。點擊它。您將看到 SSL 證書詳細信息。接下來,點擊“認證路徑”選項卡。在這裡,您將看到驗證 honeststore.com.tw 的 SSL 證書的 CA。

如您所見,honeststore.com.tw 的證書由名為 R3 的 CA 簽名。通過使用 R3 的公鑰,可以驗證 honeststore.com.tw 證書上的數字位名是否正常。但是,為什麼 Chrome 應該信任 R3?好吧,因為 R3 的證書實際上是由 ISRG Root X1 簽名的。同樣,使用其公鑰,可以驗證 R3 證書上的數位簽名是否有效。但是為什麼 Chrome 應該信任 ISRG Root X1?因為它是受信任的根 CA之一。根 CA 具有自簽名證書(即,它們的證書由它們自己的私鑰簽名)。所有瀏覽器都維護一個他們信任的根 CA 列表。

在 Google Chrome 上,您可以轉到設定 -> 隱私權和安全性 -> 安全性 -> 管理憑證 -> 受信任的根憑證授權單位。您將在列表中找到 ISRG Root X1 以及其他幾個。

現在您會知道為什麼您的瀏覽器有時會給您一個錯誤,說您的“連接不是私人的”。有可能該網站沒有使用 SSL,也可能瀏覽器無法驗證 SSL 證書的簽名並將其追溯到受信任的根 CA。

HTTPS 的其他方面

雖然上面的部分介紹了 HTTPS 的一般工作原理,但您應該了解一些更詳細的信息:

  1. HTTPS 在端口 443 上工作,而不是用於 HTTP 的端口 80
  2. 可以(但不推薦)跳過服務器 SSL 驗證步驟(如果在資源受限的環境中實現 HTTPS)。您的通信仍將被加密。唯一的問題是你不知道你正在談論的服務器是否確實是它聲稱的那個人。

以上,就是本篇文章的內容。我希望你喜歡它。謝謝閱讀。

參考

發佈留言