https的認證加密過程

HTTPS 協議是由 HTTP 加上 TLS/SSL 協議構建的可進行加密傳輸、身份認證的網絡協議。TLS 的前身是 SSL,TLS1.0 就是 SSL3.1,TLS1.1 是 SSL3.2,TLS1.2 則是 SSL3.3。HTTPS 標準端口是 443。TLS/SSL 中使用了非對稱加密,對稱加密以及 Hash 算法。算法

證書產生過程

  1. 向 CA 機構提交申請,提交信息包括:瀏覽器

    • 公司信息
    • 域名
    • 加密算法(例如:RSA)
    • Hash 簽名算法(例如:sha256)
    • 加密位數
  2. CA 機構收到證書申請,發送證書和私鑰給申請者,證書包含這些信息:安全

    • 證書內容(域名、公鑰、有效期等等)
    • 證書籤名(Hash 簽名算法對內容摘要,CA 機構再用本身的私鑰對摘要進行加密,獲得證書籤名)
簽名就是在信息的後面再加上一段內容
CA 機構發送給申請者的私鑰和證書中公鑰是一對。這裏的公鑰用於加密,私鑰用於解密。

https 鏈接過程

  1. 客戶端發送 Client Hello 給服務端,包含如下信息:網絡

    • 支持的 TLS 版本
    • 支持的加密方式
    • 隨機數 random_C
    • 域名
  2. 服務端收到請求後,發送 server Hello,包含如下信息:dom

    • 肯定 TLS 版本
    • 隨機數 random_S
    • 肯定加密方式
    • 證書加密

      • 內容(域名、公鑰、有效期等等)
      • 簽名
  3. 客戶端收到請求後,將會作一下事情:操作系統

    • 驗證證書server

      • 操做系統和瀏覽器中存有 CA 機構的公鑰。 客戶端使用 CA 機構的公鑰對簽名進行解密,解密成功說明證書由 CA 機構頒發。
      • 簽名成功解密後獲得證書摘要。客戶端使用 Hash 簽名算法對證書內容進行摘要,而後和簽名解密後的摘要比較,相等說明證書沒有被修改過。證書內容(公鑰、域名、有效期)可信。
      • 客戶端驗證證書內容的域名是否和當前網址是一致的,證書是否過時。
    • 生成隨機數域名

      • 驗證經過後,客戶端生成隨機數 Pre-master,而後用證書中的公鑰進行加密,發送給服務端
  4. 服務端ast

    • 服務端使用 CA 機構給的密鑰對加密的隨機數進行解密,獲取隨機數 Pre-master
  5. 客戶端/服務端

    • 服務端和客戶端分別用根據 random_C,random_S 和 Pre-master 生成密鑰,用於加密傳輸數據。
第一步要確認服務端的身份是否可信,才能進行下面的數據傳輸。證書的做用就是確認服務端身份,確認證書來自權威可信機構,且證書內容未做修改,證書內容可信,證書內容有效,從而確認服務端的身份。
以上只是單向認證,雙向認證時客戶端也要發送包含公鑰的證書給服務端,服務端驗證證書成功後,使用客戶端的公鑰加密通訊方案,再給客戶端,而後客戶端生成隨機數 Pre-master,根據隨機數生成的密鑰加密傳輸數據。
服務端證書可信後,再使用申請證書時生成的公鑰對隨機數加密,服務端收到後用申請證書時生成的私鑰解密。保證了隨機數的安全性,不會被第三方解密獲取。
傳輸數據的密鑰根據隨機數 Pre-master 生成的,因此隨機數保密十分重要。

加密算法

  • 非對稱加密算法:RSA,DSA/DSS
  • 對稱加密算法:AES,RC4,3DES
  • Hash 算法:MD5,SHA1,SHA256
相關文章
相關標籤/搜索