前提
由于 HTTP 協議通信的不安全性,所以人們為了防止資訊在傳輸程序中遭到泄漏或者篡改,就想出來對傳輸通道進行加密的方式 https,
介紹
https 是一種加密的超文本傳輸協議,它與 HTTP 在協議差異在于對資料傳輸的程序中,https對資料做了完全加密,由于 http 協議或者 https 協議都是處于 TCP 傳輸層之上,同時網路協議又是一個分層的結構,所以在 tcp 協議層之上增加了一層 SSL(Secure Socket Layer,安全層)或者 TLS(Transport Layer Security) 安全層傳輸協議組合使用用于構造加密通道;

申請程序
我這邊是在阿里云上申請的免費證書,直接下載下來部署到web服務器即可!

客戶端請求互動程序
1、客戶端發起請求
1、建立TCP連接
2、支持的協議版本(TLS/SSl)
3、客戶端申城亂數client.random
4、客戶端支持的加密演算法
5、SESSIONID,用于保持同一個會話
2、服務器收到請求回應
1、確認加密通道協議版本
2、服務器生成亂數server.random
3、確認使用的加密演算法
4、服務器證書(部署到web服務器證書)
3、客戶端收到證書進行驗證
1、驗證證書是否是上級 CA 簽發的, 在驗證證書的時候,瀏覽器會呼叫系統的證書管理器
介面對證書路徑中的所有證書一級一級的進行驗證,只有路徑中所有的證書都是受信的,
整個驗證的結果才是受信
2、服務端回傳的證書中會包含證書的有效期,可以通過失效日期來驗證 證書是否過期
3、驗證證書是否被吊銷了
4、驗證通過后,客戶端會征程一個亂數client.random2,客戶端根據之前的:client.random+server.random+client.random2生成堆成密鑰然后使用證書中的
公鑰進行加密,同時根據協商好的HASH演算法,取出握手訊息中的HASH值,然后用亂數加密:握手訊息+握手訊息Hash值(簽名)一起發送給服務端
4、服務端接收亂數
1、服務端收到客戶端的加密資料后,用自己的私鑰對密文進行解密,然后得到
client.random+server.random+client.random2、HASH值,并與傳過來的HASH值做對比確認是否一致
2、隨機密碼加密一段握手資訊(握手訊息+握手訊息Hash值)給客戶端
5、客戶端接收訊息
1、解密握手資訊的HASH值,如果與服務端一致,握手程序結束
2、之后所有的通信資料將由之前互動程序中生成的client.random、server.random、client.random2
通過演算法得出session key,作為后續互動程序的密鑰,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/353273.html
標籤:其他
上一篇:【網路安全】一次授權的滲透測驗
下一篇:Shiro安全框架學習
