HTTPS協(xié)議傳輸過程

握手流程

  1. 客戶端發(fā)起https請求
    客戶端告訴服務(wù)端支持哪些加密算法。

  2. 服務(wù)端響應(yīng)

    • 選擇合適的加密算法(比如:RSA、AES、MD5);
    • CA證書數(shù)字簽名服務(wù)端公鑰返回給瀏覽器。
  3. 客戶端驗證服務(wù)端數(shù)字簽名,發(fā)送秘鑰給服務(wù)端

    • 驗證服務(wù)端返回的數(shù)字簽名;
    • 生成一個隨機(jī)數(shù) a,作為AES加密秘鑰,使用服務(wù)端公鑰a 加密,得到 b;
    • 生成握手消息,以 a 為秘鑰對其進(jìn)行AES加密,得到 c;
    • 計算握手消息的HASH值,得到 d;
    • b、cd 發(fā)送到服務(wù)端。
  4. 服務(wù)端確認(rèn)加密秘鑰

    • 使用服務(wù)端私鑰解密 b ,得到 a;
    • a 為秘鑰對 c 進(jìn)行AES解密,得到握手消息;
    • 計算握手消息的HASH,驗證其與 d 是否一致;
    • 生成新的握手消息,以 a 為秘鑰對其進(jìn)行AES加密,得到 e
    • 計算新握手消息的HASH值,得到 f
    • ef 返回給瀏覽器。
  5. 握手過程完成,客戶端發(fā)送加密數(shù)據(jù)給服務(wù)端

    • a 為秘鑰對 e 進(jìn)行AES解密,得到新握手消息;
    • 計算新握手消息的HASH,驗證其與 f 是否一致;
    • 至此,握手過程結(jié)束。之后所有的通信數(shù)據(jù)將以 a 為秘鑰進(jìn)行AES加密后傳輸。

客戶端驗證服務(wù)端數(shù)字簽名的流程

  1. 獲取對應(yīng)CA證書頒發(fā)機(jī)構(gòu)的公鑰
    根據(jù)數(shù)字簽名信息,獲取對應(yīng)CA證書頒發(fā)機(jī)構(gòu)的公鑰。
    該公鑰是被根證書頒發(fā)機(jī)構(gòu),使用其私鑰加密過的。

  2. 解密并獲得CA證書頒發(fā)機(jī)構(gòu)的公鑰
    使用本地根證書公鑰,解密并獲得CA證書頒發(fā)機(jī)構(gòu)的公鑰。
    本地根證書公鑰是在用戶安裝操作系統(tǒng)時,由操作系統(tǒng)寫入瀏覽器的。

  3. 解密數(shù)字簽名,驗證服務(wù)端公鑰
    使用CA證書頒發(fā)機(jī)構(gòu)的公鑰,解密數(shù)字簽名,得到服務(wù)端公鑰的HASH。
    計算服務(wù)端公鑰的HASH,驗證二者是否相同。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容