http與https的區別

天才程式YUAN發表於2020-03-22

HTTP與HTTPS的區別

安全性上,HTTPS是安全超文字協議,在HTTP基礎上有更強的安全性。簡單來說,HTTPS是使用TLS/SSL加密的HTTP協議

申請證書上,HTTPS需要使用ca申請證書

傳輸協議上, HTTP是超文字傳輸協議,明文傳輸;HTTPS是具有安全性的 SSL 加密傳輸協議

連線方式與埠上,http的連線簡單,是無狀態的,埠是 80; https 在http的基礎上使用了ssl協議進行加密傳輸,埠是 443

HTTP的工作過程

HTTP由請求和響應構成,是一個標準的客戶端伺服器模型(C/S)。HTTP協議永遠都是客戶端發起請求,伺服器回送響應。

  1. 地址解析。域名系統DNS解析域名得到主機的IP地址

  2. 封裝HTTP請求資料包。封裝的內容有以上部分結合本機自己的資訊。

  3. 封裝成TCP包,建立TCP連線(TCP的三次握手)

  4. 客戶機傳送請求命令。 建立連線後,客戶機向伺服器傳送一個請求

  5. 伺服器響應。伺服器接到請求後,給予相應的響應資訊

  6. 伺服器關閉TCP連線。一般Web伺服器向瀏覽器傳送了請求資料,它要關閉TCP連線

  7. 客戶端解析報文,解析HTML程式碼,並渲染

HTTPS的實現原理

HTTP以明文方式傳輸資訊,不能保障資料傳輸的安全。

HTTPS在HTTP的基礎上加入了SSL協議。

HTTPS使用SSL協議和TLS協議

SSL 依靠證書來驗證伺服器的身份,併為瀏覽器和伺服器之間的通訊加密。

HTTPS的通訊過程

https通訊時,首先建立ssl層的連線,客戶端將ssl版本號和加密元件發到伺服器端,伺服器端收到後對ssl版本號和加密元件進行匹配,同時將CA證書及金鑰傳送到客戶端。客戶端對證書進行驗證,驗證通過後使用非對稱加密對資料通訊時的金鑰進行協商。協商後得到一致的獲得一致的對稱加密金鑰。然後使用對稱加密演算法進行TCP連線,後續的過程跟http的過程一致。三次握手,資料交換,四次揮手,通訊結束。

過程如下 :

  1. 客戶端和伺服器端通過TCP建立連線。

  2. 客戶端向伺服器傳送HTTPS請求。

  3. 伺服器響應請求,並將數字證書傳送給客戶端,數字證書包括公共祕鑰、域名、申請證書的公司。

  4. 客戶端收到伺服器端的數字證書之後,會驗證數字證書的合法性。

  5. 如果公鑰合格,那麼客戶端會生成一個用於進行對稱加密的金鑰client key,並用伺服器的公鑰對客戶端金鑰進行非對稱加密。

  6. 客戶端會發起HTTPS中的第二個HTTP請求,將加密之後的客戶端金鑰傳送給伺服器。

  7. 伺服器接收到客戶端發來的密文之後,會用私鑰對其進行非對稱解密,得到客戶端祕鑰。並使用客戶端祕鑰進行對稱加密,生成密文併傳送。

  8. 客戶端收到密文,並使用客戶端祕鑰進行解密,渲染網頁。

在這裡插入圖片描述

參考連結:

https://www.jianshu.com/p/14cd2c9d2cd2

相關文章