HTTPS在傳輸的過程中會涉及到三個金鑰:
伺服器端的公鑰和私鑰,用來進行非對稱加密(客戶端傳輸隨機祕鑰給服務端,使用非對稱加密)
客戶端生成的隨機金鑰,用來進行對稱加密(資料傳輸就是對稱加密的,劫持者需要破解對稱加密資訊,就需要客戶端的隨機祕鑰)
一個HTTPS請求實際上包含了兩次HTTP傳輸,可以細分為8步。
1.客戶端向伺服器發起HTTPS請求,連線到伺服器的443埠
2.伺服器端有一個金鑰對,即公鑰和私鑰,是用來進行非對稱加密使用的,伺服器端儲存著私鑰,不能將其洩露,公鑰可以傳送給任何人。
3.伺服器將自己的公鑰傳送給客戶端。
4.客戶端收到伺服器端的證照之後,會對證照進行檢查,驗證其合法性,如果發現發現證照有問題,那麼HTTPS傳輸就無法繼續。嚴格的說,這裡應該是驗證伺服器傳送的數字證照的合法性,關於客戶端如何驗證數字證照的合法性,下文會進行說明。如果公鑰合格,那麼客戶端會生成一個隨機值,這個隨機值就是用於進行對稱加密的金鑰,我們將該金鑰稱之為client key,即客戶端金鑰,這樣在概念上和伺服器端的金鑰容易進行區分。然後用伺服器的公鑰對客戶端金鑰進行非對稱加密,這樣客戶端金鑰就變成密文了,至此,HTTPS中的第一次HTTP請求結束。
5.客戶端會發起HTTPS中的第二個HTTP請求,將加密之後的客戶端金鑰傳送給伺服器。
6.伺服器接收到客戶端發來的密文之後,會用自己的私鑰對其進行非對稱解密,解密之後的明文就是客戶端金鑰,然後用客戶端金鑰對資料進行對稱加密,這樣資料就變成了密文。
7.然後伺服器將加密後的密文傳送給客戶端。
8.客戶端收到伺服器傳送來的密文,用客戶端金鑰對其進行對稱解密,得到伺服器傳送的資料。這樣HTTPS中的第二個HTTP請求結束,整個HTTPS傳輸完成。
作者:Leon_hy
連結:www.jianshu.com/p/14cd2c9d2cd2
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
本作品採用《CC 協議》,轉載必須註明作者和本文連結