首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

HTTPS 通信原理深度解析:SSL/TLS 握手流程、證書驗證與加密機制

     編輯:Java 綜合教學

HTTPS 通信原理深度解析:SSL/TLS 握手流程、證書驗證與加密機制

HTTPS = HTTP + SSL/TLS,解決 HTTP 明文傳輸、身份不可信、數據易竄改三大風險。本文詳述握手全過程及關鍵技術點。

HTTP vs HTTPS 核心差異

特性HTTPHTTPS
端口80443
傳輸形式明文密文(加密)
身份認證無CA 證書驗證服務端身份
數據完整性無保障MAC/簽名防竄改

HTTPS 握手詳細步驟(單向認證)

  1. Client Hello:客戶端發送支持的加密套件、隨機數 Random1、會話 ID 等
  2. Server Hello + Certificate:服務端選定加密套件、返回隨機數 Random2、數字證書(含公鑰)、可選 Server Key Exchange
  3. 驗證證書:客戶端驗證證書合法性(CA 信任鏈、域名匹配、有效期、吊銷狀態)。
    瀏覽器證書不信任警告 通過則顯示安全鎖圖標 握手流程圖
  4. 生成預主密鑰:客戶端生成 PreMasterSecret,用服務端公鑰加密發送
  5. 雙方生成會話密鑰:雙方用 Random1 + Random2 + PreMasterSecret 通過 PRF 算法派生對稱會話密鑰
  6. Finished:雙方用會話密鑰加密握手消息摘要發送,驗證握手完整性
  7. 應用層傳輸:後續 HTTP 報文採用會話密鑰對稱加密(AES/ChaCha20 等)

關鍵技術點

  • 混合加密:非對稱加密(RSA/ECDHE)傳遞預主密鑰,對稱加密(AES-GCM)傳輸數據,兼顧安全與性能
  • 證書體系:X.509 證書鏈(Root CA → Intermediate CA → Server Cert),瀏覽器內置根證書庫
  • 完整性保護:HMAC 或 AEAD(如 AES-GCM)防止中間人竄改
  • 前向保密:使用 ECDHE 密鑰交換,長期私鑰洩露不影響歷史會話

雙向認證(mTLS)

服務端要求客戶端證書:握手中服務端發送 Certificate Request,客戶端返回證書及 Certificate Verify(私鑰簽名證明持有權)。適用於企業內網、API 网關強身份認證場景。

總結

HTTPS 通過 TLS 握手協商對稱密鑰,利用 CA 證書實現服務端身份認證,採用混合加密兼顧安全性能,並以消息認證碼保證數據完整性。理解握手流程有助於排查證書錯誤、協商失敗、性能優化等問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved