網(wǎng)絡協(xié)議-HTTPS

HTTPS

  • HTTPS(Hyper Text Transfer Protocol Secure):超文本傳輸安全協(xié)議
    • 常稱為HTTP over TLS, HTTP over SSL, HTTP Secure
  • HTTPS的默認端口是443
  • HTTPS是在HTTP的基礎(chǔ)上使用SSL/TLS來加密報文,對竊聽和中間人提供合理的防護
  • SSL/TLS也可以用在其他協(xié)議上,比如 FTP -> FTPS, SMTP -> SMTPS

SSL/TLS - 工作在哪一層

SSL/TLS - 工作在哪一層
  • SSL / TLS 工作在應用層和傳輸層之間

HTTPS的通信過程

    1. TCP的3次握手
    1. TLS的連接
    1. HTTP請求和響應

TLS 的連接

TLS 的連接
  • 1.Client Hello,客戶端向服務端打招呼(TLS層)發(fā)送的數(shù)據(jù)內(nèi)容如下

    • TSL的版本號
    • 支持的加密組件(Cipher Suite)列表,加密組件是指所有的加密算法及密鑰長度
    • 一個隨機數(shù)(Client Random)


    1. Server Hello,服務端響應,響應數(shù)據(jù)如下
    • TLS的版本號
    • 選擇的加密組件(是從接收到的客戶端加密組件列表中挑選出來的)
    • 一個隨機數(shù)(Server Random)


    1. 發(fā)送證書(Certificate)
    • 服務器的公鑰證書(被CA簽名過的)


  • Server Key Exchange

    • 用以實現(xiàn)ECDHE算法的其中一個參數(shù)(Server Params)
      • ECDHE是一種密鑰交換算法
      • 為了防止偽造,Server Params經(jīng)過了服務器私鑰簽名


  • 5 Server Hello Done

    • 告知客戶端:協(xié)商部分結(jié)束


    • 目前為止:客戶端和服務器之間通過明文共享了 ClientRandom、Server Random、Server Params

    • 而且,客戶端已經(jīng)拿到了服務器的公鑰證書,接下來,客戶端會驗證證書的真實性

    1. Client Key Exchange(用公鑰進行了加密)
    • 用以實現(xiàn)ECDHE算法的另一個參數(shù)(Client Params)


  • 目前為止。客戶端和服務器都用來了ECDHE算法的2個參數(shù):Server Params,Client Params

  • 客戶端,服務器都可以

    • 使用ECDHE算法根據(jù)ServerParam,Client Params計算出一個新的隨機密鑰串: Pre-master secret
    • 然后結(jié)合Client Random,Server Random,Pre-master secret生成一個主密鑰
    • 最后利用主密鑰衍生出其他密鑰:客戶端發(fā)送用的會話密鑰,服務端發(fā)送的用的會話密鑰等
    1. Change Cipher Spec
    • 告知服務器:之后的通信采用計算出來的會話密鑰進行加密


    1. Finished
    • 包含連接至今全部報文的整體校驗值(摘要),加密之后發(fā)送給服務器
    • 這次握手協(xié)商是否成功,要服務器是否能夠正確解密報文作為判定標準
  • 9.Change Cipher Spec

    • 告知客戶端:服務端解密沒有問題,之后的通信采用計算出來的會話密鑰進行加密
    1. Finished
    • 到目前為止,客戶端服務器都驗證加密解密沒問題,握手正式結(jié)束
    • 后面開始傳輸加密的HTTP請求和響應
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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