HTTPS的安全通訊機制

zhangfaliang發表於2018-12-24

今天給大家分享一下https的通訊互動機制,如果不瞭解https的請檢視《面試常問問題http與https的區別》,話不多說看下圖就一目瞭然HTTPS的安全通訊機制

步驟1 :客戶端通過傳送ClientHello報文開始SSL通訊。報文中包含客戶端支援的SSL的指定版本、加密元件列表(所使用的加密演算法及金鑰長度)。

步驟2:伺服器進行SSL通訊時,會以ServerHello 報文作為應答。和客戶端一樣,在報文中含有SSL的版本以及加密元件

步驟3: 之後伺服器會傳送 數字證書機構簽名的數字證書(Cretificate,伺服器公開鑰匙+證書)。報文中包含公開金鑰證書。

步驟4: 最後伺服器傳送Server Hello Done 報文通知客戶端,最初階段的SSL握手協議結束。

步驟5: SSL第一次握手結束之後,客戶端以 Client key Exchange 報文作為迴應。報文中包含通訊加密中使用的一種稱為Pre-master  secret的隨機密碼串。該報文已被步驟3中的公開金鑰進行加密。

步驟6:接著客戶端繼續傳送Change Cipher Spec報文。該報文會提示伺服器,次報文之後的通訊會採用Per-master secret(共享)金鑰加密

步驟7:客戶端傳送Finished報文。該報文包含連線至今全部報文的整體校驗值。這次握手協商是否成功,要以伺服器是否能夠正確解密(共享金鑰解密)該報文作為判斷標準。

步驟8:伺服器同樣傳送 Change Cipher Spec報文,該報文提示客戶端,次報文之後的通訊會採用Per-master secret(共享)金鑰加密

步驟9:伺服器同樣傳送Finished報文,該報文包含連線至今全部報文的整體校驗。這次握手協商是否成功,要以客戶端是否能夠正確解密(共享金鑰解密)改報文作為判斷標準。

步驟10: 伺服器和客戶端的Finished報文交換之後,ssl連線算是建立完成。當然,通訊會受到SSL的保護。從此開始進行應用層協議的通訊,即傳送http請求

步驟11:應用層協議通訊,即傳送http響應。

步驟12:最後由客戶端斷開連線。斷開時,傳送close_notify報文。上圖做了一些省略,這部之後在傳送TCP FIN 報文來關閉與TCP的通訊

在以上流程中,應用層傳送資料時會附加一種叫做MAC(masess authentication code)的報文摘要。MAC能夠查知報文是否遭到篡改,從而保護報文的完整性。


下面是對整個流程的圖解。途中說明了從使用伺服器的公開金鑰證書建立https通訊的整個過程。HTTPS的安全通訊機制



相關文章