《圖解HTTP》讀書筆記7之HTTPS的安全通訊機制

weixin_33860722發表於2016-01-11

HTTP的通訊步驟


1064537-cfb9288771054b30.jpeg

圖中簡述了HTTPS的通訊步驟,具體分為以下:
1,客戶端通過傳送Client Hello報文開始SSL通訊。報文中包含客戶端支援的SSL的制定版本、加密元件列表(加密演算法,金鑰長度等);
2,伺服器可進行SSL通訊時,會以Server Hello報文作為應答。和客戶端一樣,在報文中包含SSL版本以及加密元件。伺服器的加密元件內容是從接收到的客戶端加密元件內篩選出來的;
3,之後伺服器傳送Certificate報文。報文中包含公開金鑰證書;
4,最後伺服器傳送Server Hello Done報文通知客戶端,最初階段的SSL握手協商部分結束;
5,SSL第一次握手結束之後,客戶端以Client Key Exchange報文作為回應。報文中包含通訊加密中使用的一種被稱之為Pre-master secret的隨機密碼串。該報文已經用步驟3中的公開金鑰進行加密;
6,接著客戶端繼續傳送Change Cipher Spec報文。該報文會提示伺服器,在此報文之後的通訊會採用Pre-master secret金鑰加密;
7,客戶端傳送Finished報文。該報文包含連線至今全部報文的整體校驗值。這次握手協商是否能夠成功,要以伺服器是否能夠正確解密該報文作為判定標準;
8,伺服器同樣傳送Change Cipher Spec報文;
9,伺服器同樣傳送Finished報文;
10,伺服器和客戶端的Finished報文交換完畢之後,SSL連線就算建立完成。當然,通訊會收到SSL的保護。從此處開始進行應用層協議的通訊,即傳送HTTP請求;
11,應用層協議通訊,即傳送HTTP響應;
12,最後由客戶端斷開連線。斷開連線時,傳送close_notify報文。這步之後再傳送TCP FIN報文來關閉與TCP的通訊。

下圖是從僅使用伺服器端的公開金鑰證書(伺服器證書)建立HTTPS通訊的整個過程的圖解。


1064537-d22c72cde0610fc4.png

HTTPS也存在一些問題:
問題一,即當使用SSL時,它的處理速度會變慢。SSL的慢分兩種。一種是通訊慢,另一種是指由於大量消耗CPU及記憶體等資源,導致處理速度變慢。和使用HTTP相比,網路負載可能會變慢2到100倍。
問題二,SSL必須進行加密處理。在伺服器和客戶端都需要進行加密和解密的運算處理,這樣會比HTTP更多地消耗伺服器和客戶端的硬體資源,導致負載增強。

因此,雖然HTTPS安全可靠,但是不是所有的Web網站都要一直使用HTTPS。

相關文章