最近看了一本關於網絡的書,叫作《圖解http》,以爲這本書寫的很好,看完以後印象比較深的是這本書的https的解釋,爲此在此總結一下本身的理解。文中的不少截圖出自http圖解,在此表示感謝。算法
https不是一種新的協議,只是http的通訊接口部分使用了ssl和tsl協議替代,加入了加密、證書、完整性保護的功能,下面解釋一下加密和證書,以下圖所示瀏覽器
加密和解密公用一套祕鑰,這樣就會產生問題,已共享祕鑰加密方式必須將祕鑰傳送給對方,但若是通訊被監聽,那麼祕鑰可能會被泄漏產生危險。安全
公開祕鑰加密使用一種非對稱加密的算法,使用一對非對稱的祕鑰,一把叫作共有祕鑰,一把叫作私有祕鑰,在加密的時候,通訊的一方使用共有祕鑰進行加密,通訊的另外一方使用私有祕鑰進行解密,利用這種方式不須要發送私有祕鑰,也就不存在泄漏的風險了。服務器
由於公開祕鑰加密的方式比共享祕鑰加密的方式鑰消耗cpu資源,https採起了混合加密的方式,來結合二者的優勢。網絡
在祕鑰交換階段使用公開加密的方式,以後創建鏈接後使用共享祕鑰加密方式進行加密,以下圖。加密
由於公開加密還存在一些問題就是沒法證實公開祕鑰的正確性,爲了解決這個問題,https採起了有數字證明認證機構和其相關機構頒發的公開祕鑰證書,通訊過程以下圖所示。spa
解釋一下上圖的步驟:
1.服務器將本身的公開祕鑰傳到數字證書認證機構
2.數字證書認證機構使用本身的祕鑰來對傳來的服務器公鑰進行加密,,並頒發數字證書
3.服務器將傳回的公鑰證書發送給客戶端,客戶端使用數字機構頒發的公開祕鑰來驗證證書的有效性,以及公開祕鑰的真實性
4.客戶端使用服務器的公開祕鑰進行消息加密,後發送給服務器。
5.服務器使用私有祕鑰進行解密。接口
瀏覽器在安裝的時候會內置可信的數字證書機構的共有祕鑰,以下圖所示。ip
這就是爲何咱們使用本身生成的證書的時候會產生安全警告的緣由。ssl
再附一張https的具體通訊步驟和圖解。
最後用了人家這麼多圖給個購買連接吧圖解http