HTTPS 和 HTTP 的區別

Aliliin發表於2022-02-17

HTTPS 和 HTTP 的區別

  • HTTP 協議以明文方式傳送內容,資料都是未加密的,安全性較差。HTTPS 資料傳輸過程是加密的,安全性較好。
  • HTTP 和 HTTPS 使用的是完全不同的連線方式,用的埠也不一樣,前者是 80 埠,後者是 443 埠。
  • HTTPS 協議需要到數字認證機構(Certificate Authority, CA)申請證照,一般需要一定的費用。
  • HTTP ⻚面響應比 HTTPS 快,主要因為 HTTP 使用 3 次握手建立連線,客戶端和伺服器需要握手 3 次,而
  • HTTPS 除了 TCP 的 3 次握手,還需要經歷一個 SSL 協商過程。

HTTP 建立連線的過程

HTTP(Hyper Text Transfer Protocol: 超文字傳輸協議) 是一種簡單的請求 - 響應協議,被用於在 Web 瀏覽器和 網站伺服器之間傳遞訊息。HTTP 使用 TCP(而不是 UDP)作為它的支撐運輸層協議。其預設工作在 TCP 協議 80 埠,HTTP 客戶機發起一個與伺服器的 TCP 連線,一旦連線建立,瀏覽器和伺服器程式就可以通過套接字介面訪 問 TCP。客戶機從套接字介面傳送 HTTP 請求報文和接收 HTTP 響應報文。類似地,伺服器也是從套接字介面接收 HTTP 請求報文和傳送 HTTP 響應報文。其通訊內容以明文的方式傳送,不通過任何方式的資料加密。當通訊結束 時,客戶端與伺服器關閉連線。

HTTPS 建立連線的過程

  • HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是以安全為目標的 HTTP 協議,在 HTTP 的基 礎上通過傳輸加密和身份認證的方式保證了傳輸過程的安全性。其工作流程如下:
  1. 客戶端發起一個 HTTPS 請求,並連線到伺服器的 443 埠,傳送的資訊主要包括自身所支援的演算法列表和金鑰 ⻓度等;

  2. 服務端將自身所支援的所有加密演算法與客戶端的演算法列表進行對比並選擇一種支援的加密演算法,然後將它和其它 金鑰元件一同傳送給客戶端。

  3. 伺服器向客戶端傳送一個包含數字證照的報文,該數字證照中包含證照的頒發機構、過期時間、服務端的公鑰等 資訊。

  4. 最後服務端傳送一個完成報文通知客戶端 SSL 的第一階段已經協商完成。

  5. SSL 第一次協商完成後,客戶端傳送一個回應報文,報文中包含一個客戶端生成的隨機密碼串,稱為pre_master_secre,並且該報文是經過證照中的公鑰加密過的。

  6. 緊接著客戶端會傳送一個報文提示服務端在此之後的報文是採用pre_master_secre 加密的。

  7. 客戶端向服務端傳送一個 finish 報文,這次握手中包含第一次握手至今所有報文的整體校驗值,最終協商是否 完成取決於服務端能否成功解密。

  8. 服務端同樣傳送與第 6 步中相同作用的報文,已讓客戶端進行確認,最後傳送 finish 報文告訴客戶端自己能夠 正確解密報文。

  9. 當服務端和客戶端的 finish 報文交換完成之後,SSL 連線就算建立完成了,之後就進行和 HTTP 相同的通訊過程, 唯一不同的是在 HTTP 通訊過程中並不是採用明文傳輸,而是採用對稱加密的方式,其中對稱金鑰已經在 SSL 的建立過程中協商好了。

HTTPS 的加密方式

HTTPS 採用對稱加密和非對稱加密相結合的方式,首先使用 SSL/TLS 協議進行加密傳輸,為了彌補非對稱加密的 缺點,HTTPS 採用證照來進一步加強非對稱加密的安全性,通過非對稱加密,客戶端和服務端協商好之後進行通訊 傳輸的對稱金鑰,後續的所有資訊都通過該對稱祕鑰進行加密解密,完成整個 HTTPS 的流程。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
高永立

相關文章