淺析HTTPS的通訊機制
什麼是HTTPS?
HTTPS 是在HTTP(Hyper Text Transfer Protocol)的基礎上加入SSL(Secure Sockets Layer),在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性 。依此避免HTTP的明文傳輸容易被竊聽、不驗證身份容易被偽裝、無法驗證報文完整性容易被篡改等問題。除了被廣泛用於網際網路上安全敏感的通訊,大部分網站也正在廣泛採用 。
HTTPS的通訊機制
HTTPS不僅僅是把http://
換成https://
看上去那麼簡單,HTTPS的通訊機制要比HTTP的複雜一些。
第一步,客戶端向服務端傳送Client Hello
報文。在報文中描述了客戶端支援的SSL版本,還有客戶端支援的加密演算法及金鑰長度。
第二步,服務端向客戶端傳送Server Hello
報文作為應答。在報文中描述了服務端和客戶端可以共同使用的SSL版本、加密演算法及金鑰長度,以此作為後續報文傳輸的加密方式。
第三步,服務端向客戶端傳送Certificate
報文。在報文中包含由數字證書認證機構(Certificate Authority,CA)和其相關機構頒發的公共金鑰證書。
第四步,服務端向客戶端傳送Server Hello Done
報文,通知客戶端SSL握手協商部分結束。
第五步,當客戶端收到服務端SSL握手結束的報文後,客戶端首先驗證證書的合法性和可靠性,然後向服務端傳送Client Key Exchange
報文。在報文中包含了使用證書中公開金鑰加密的隨機金鑰。
第六步,客戶端向服務端傳送Change Cipher Spec
報文。這個報文是為了提示服務端之後的通訊都使用那個隨機金鑰進行對稱加密。
第七步,客戶端向服務端傳送Finished
報文。這個報文包含從開始連線到現在全部報文的整體校驗值。服務端,握手協商成功。
第八步,當服務端能夠正確解密並驗證客戶端的校驗值時,同樣向客戶端傳送Change Cipher Spec報文。
第九步,服務端向客戶端同樣傳送Finished
報文。
第十步,服務端和客戶端的Finished
報文交換完畢之後,SSL連線就建立完成了。當通訊會受到 SSL 的保護後,開始傳送 HTTP 請求和相應。
尾聲
目前越來越多的核心技術被“卡脖子”,之前也傳出一些開源軟體禁止我國的使用。我有一個擔心,萬一CA也別被“卡脖子”,甚至被“徵用”,那麼我國的網路安全會受到極大的威脅。
竟然已經看到這裡了,你我定是有緣人,留下你的點贊和關注,他日必成大器。
微信公眾號:萬貓學社
微信掃描二維碼
關注後回覆「電子書」
獲取12本Java必讀技術書籍