什么是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必讀技術書籍
作者:萬貓學社
出處:http://www.cnblogs.com/heihaozi/
著作權宣告:本文遵循 CC 4.0 BY-NC-SA 著作權協議,轉載請附上原文出處鏈接和本宣告,
微信掃描二維碼,關注萬貓學社,回復「電子書」,免費獲取12本Java必讀技術書籍,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/440429.html
標籤:其他
