https協議其實就是http over tsl,
基礎的http通訊是明文的,有三大風險:資訊被竊聽,資訊被篡改,身份的冒充。
tsl協議就是為防範這些風險存在的。tsl使用非對稱加密保護下的對稱加密在保證了通訊效率的同時防止竊聽,使用證書體系防止資訊篡改和身份冒認。
注意:tsl協議握手階段的通訊是明文進行的
1.瀏覽器傳送clienthello
其中包含了瀏覽器支援的tsl協議的版本,支援的加密演算法,壓縮演算法等。同時瀏覽器端生成乙個隨機數,一起傳送給伺服器。
2.伺服器返回serverhello
(1)確認tsl協議版本,確定乙個雙方都支援的加密演算法
(2)傳送伺服器的證書,傳送乙個伺服器端生成的隨機數。(如果訪問的**出於安全性的考慮,要求訪問者也提供證書的話會在這一步發出請求。)
3.瀏覽器拿到證書後驗證該證書是否是可信任的,如果證書可信任,那麼其中的公鑰也是可信的。
(1)瀏覽器生成第三個隨機數 pre key,將pre key使用伺服器的公鑰加密,傳送回伺服器
(2)編碼改變通知,告知伺服器接下來將使用選擇的加密演算法進行加密通訊
(3)將此前傳送過的所有資訊的摘要加密後傳送給伺服器,供伺服器進行加密通道驗證。最後發出客戶端握手階段結束訊號。
4.伺服器接收到對方發來的pre key後,此時通訊雙方都擁有了三個隨機數(前兩個是明文傳送的,第三個pre key 是非對稱加密傳送的),由這三個隨機數雙方可以計算得到兩個相同的對稱金鑰,伺服器使用這一金鑰驗證加密通道後,向客戶端傳送伺服器發出:
(1)編碼改變通知:告知接下來的通訊將使用加密通訊
(2)伺服器握手階段結束訊號。
至此握手階段結束,雙方接下來使用普通的http協議進行通訊,由三個隨機數生成的對稱金鑰加密內容。
1.整個過程中靠證書體系為通訊雙方提供身份信任。
2.通訊雙方共生成了三個隨機數能最大限度地避免偽隨機,保證了生成的對稱金鑰難以被暴力破解。
3.第三個隨機數的傳輸使用非對稱加密,保證了雙方對稱金鑰的私密性。
4.整個通訊中,只有pre key的傳送使用了非對稱加密,之後的加密通訊都採用對稱加密,最大限度地保證了通訊效率。
HTTPS加密流程
1 客戶端發起https請求首先向服務端傳送客戶端ssl tls協議版本號 支援的加密演算法種類 如 rsa加密演算法,des對稱加密演算法,sha1摘要演算法 產生隨機數等資訊 2 服務端向瀏覽器回傳 ssl tls 協議版本號 選擇一種客戶端瀏覽器支援的加密演算法和hash演算法 隨機數 服務端...
HTTPS通訊流程
https的通訊流程 1 客戶端向伺服器發起ssl通訊,報文中包含客戶端支援的ssl的指定版本,加密元件列表 所使用的加密演算法及金鑰長度 2 伺服器的響應報文中,包含ssl版本以及加密元件,伺服器的加密元件內容是從客戶端發來的加密元件列表中篩選出來的,伺服器還會發乙個公開金鑰並且帶有公鑰證書 3 ...
https流程分析
先來回顧一下http協議的流程,http屬於應用層的協議,tcp傳輸層,ip網路層,arp mtu鏈路層,ip封裝tcp,https的圖大致為下圖所示 ip層的16位總位元組為65535,意思是乙個ip的最大資料報的大小,mtu是限制了鏈路層的資料報的大小,所以ip層的每個資料報的大小限制在46 1...