https原理和流程

以前只知道https是加密傳輸,但是並不知道數據是怎麼加密怎麼傳輸的,然後抽時間看了看,記錄一下自己的理解。

加密方式

https涉及到了兩種加密,一種是非對稱加密,一種是對稱加密。

非對稱加密使用私鑰和公鑰,如果使用公鑰加密,需要用私鑰解密。如果用私鑰加密,需要用公鑰解密。非對稱加密速度比較慢,但是安全性比較高。

對稱加密又稱爲私鑰加密,發送方和接收方使用同一個密鑰去加密和解密數據。其加密和解密速度快,但是安全性低。

https通信過程

一個https請求實際上包含了兩次http傳輸,具體流程如下:

1.客戶端向服務端發起https請求

2.服務端的安全證書中包含了公鑰和私鑰,然後向客戶端發送數字證書(數字證書中包含公鑰)

3.客戶端對數字證書進行檢查,驗證合法性。如果公鑰合法,客戶端生成一個隨機值,這個隨機值就是客戶端密鑰,然後使用公鑰對密鑰進行非對稱加密。至此完成了https的第一次傳輸。

4.客戶端發起https的第二次請求,將加密之後的客戶端密鑰發送給服務端。

5.服務端使用私鑰對客戶端密鑰進行解密,解密之後的明文就是客戶端密鑰,然後服務端使用此密鑰對數據進行加密,將加密的數據發給客戶端。

6.客戶端收到加密的數據,然後使用客戶端密鑰對數據進行解密,然後得到的明文就是服務端發送的數據。至此完成了https的第二次傳輸,整個https的傳輸完成。

數字證書

數字證書通常來說是由受信任的數字證書頒發機構CA,在驗證服務器身份後頒發,證書中包含了一個密鑰對(公鑰和私鑰)和所有者識別信息。數字證書被放到服務端,具有服務器身份驗證和數據傳輸加密功能。

數字證書包含證書信息、公鑰、數字簽名。

數字簽名是根據證書信息通過Hash算法生成一個消息摘要,然後使用CA證書的私鑰進行加密生成數字簽名。

https通信過程中客戶端會對數字證書進行驗證合法性,那如何驗證呢,如下:

客戶端使用數字證書中的公鑰對數字簽名進行解密得到消息摘要,然後使用同樣的Hash算法對證書信息生成消息摘要,如果兩個消息摘要一樣就表示證書沒有被修改過,是合法的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章