拜讀了阮一峯大神關於HTTPS的文章,恍然大悟了不少以前看的似懂非懂的HTTPS知識。特此整理下來,讓本身可以完全消化,同時也但願能幫助到你們。html
消息使用同一個密鑰進行加密和解密。算法
A向B發送消息 使用B的公鑰進行加密 B收到密文後使用本身的私鑰進行解密 反之亦然安全
A先生成一個對話密鑰,而後把對話密鑰發送給B。可是這個對話密鑰要通過B的公鑰進行加密,B收到後用本身的私鑰進行解密。這樣就解決了對稱加密時公鑰容易被截取的缺陷。服務器
2,3兩種方法在加密時都使用B的公鑰進行加密。可是B的公鑰哪來的呢?加密
是鏈接一開始B把本身的公鑰發送給A。可是在這個時候,有個中間人截取了B的公鑰,而後把本身的公鑰發送給A。A在給B發送消息時,想用B的公鑰進行加密。但實際上用的是中間人的公鑰。中間人截取了A給B發送的消息,而後用本身的私鑰解密。就能夠隨意讀取消息的內容。
此外,由於中間人能夠把本身的公鑰發給A,讓B誤覺得中間人就是A3d
檢驗時 把數字證書中的公鑰經過hash算法獲得的消息摘要以及數字前面經過CA公鑰解密獲得的消息摘要進行對比。數字證書包括 公鑰和數字簽名 公鑰經過hash算法能夠獲得數據摘要,數據摘要使用CA的私鑰加密獲得數字簽名。cdn
HTTPS是安全版的HTTP,是以安全爲目標的HTTP通道。在HTTP的基礎下加入了SLSL/TSL層,這也HTTPS的安全基礎。現被普遍應用於互聯網上的敏感通信,如交易支付的過程。HTTPS創建鏈接的階段也就是非對稱加密+對稱加密+數字證書協同做用的過程。服務器和客戶端各產生一個隨機數,互相傳給對方。而後再生成第三個隨機數,經過服務器公鑰加密傳給服務器,服務器用私鑰解密得到第三個隨機數。這樣雙方都有了三個隨機數。因而用這三個隨機數來生成對話密鑰,來加密以後的通訊過程。htm
參考資料: 阮一峯 圖解SSL/TLS協議blog