天天看點

快速了解https是如何保證安全的

1.https作用

  • 混合加密
  • 身份驗證: 可以通過數字證書驗證對方身份
  • 驗證資料完成性: 防止内容被中間人冒充或篡改

2. 基礎知識

  • 數字摘要:通過hash函數對封包進行哈希,得到長度固定的字元串稱謂摘要, 這個過程是單向的,無法通過摘要反推原文。
  • 數字簽名:對數字摘要進行非對稱加密後的密文,叫做數字簽名。
  • 數字證書:可用于用戶端驗證服務端身份的證書,一般是由CA機構簽發的。數字證書包含頒發機構、過期時間、網站域名、網站公鑰、CA簽名。
  • CSR:CSR是Certificate Signing Request的英文縮寫,即數字證書簽名請求,網站隻要把CSR檔案送出給證書頒發機構後,證書頒發機構使用其【根證書私鑰】對CSR内容進行【簽名】,就生成了數字證書;CSR請求中包含網站生成的公鑰,是以CSR必定有對用的key,也就是私鑰.例如下圖是線上生成CSR的工具:
快速了解https是如何保證安全的

生成結果:

快速了解https是如何保證安全的

3. https流程

  1. 網站首先需要申請域名,然後使用域名生成 CSR 和 私鑰,然後向CA機構申請數字證書。
  2. 浏覽器向網站發送https請求,URL中必須使用域名。
  3. 網站收到請求後,立刻響應數字證書。
  4. 浏覽器收到數字證書後,在本地已授信的根證書清單中,查詢數字證書中的頒發機構的根證書;如果不存在則無法驗證,是以提示使用者該數字證書不安全,如果存在,則使用本地根證書對數字證書進行驗證,如果驗證失敗則提示使用者該數字證書不安全。如果證書沒有問題,浏覽器自動生成一個随機數(對稱密鑰)對請求封包進行加密,然後再使用數字證書中的公鑰對随機數進行加密,然後将【請求密文】和【随機數密文】發送給網站。
  5. 網站收到浏覽器發來的密文後,首先使用私鑰解密【随機數密文】得到【随機數】,然後使用随機數解密【請求封包】,此時SSL連接配接已建立,該連接配接以後的通信将一直使用該【随機數】進行對稱加密。最後網站使用【随機數】加密響應封包,并發送到浏覽器。
  6. 浏覽器接受到響應封包後,使用【随機數】解密封包,然後使用【随機數】加密請求。

4. 數字證書驗證主要過程

  1. 浏覽器請求數字證書

比如通路百度收到的數字證書如下圖:

快速了解https是如何保證安全的

點選URL框左邊的鎖即可檢視證書,在證書的正常資訊:

  • 頒發給: baidu.com 即數字證書中的網站域名
  • 頒發者: CA機構
  • 有效期: 即數字證書的有效期
    快速了解https是如何保證安全的
    上圖示數字證書的詳情,點選下方的【證書的詳情資訊】可以打開證書的解釋,最重要的資訊就是指紋和公鑰了。

指紋就是證書簽名,是CA對證書内容進行摘要後使用私鑰加密後的簽名。

公鑰是網站的公鑰。

  1. 浏覽器查找CA根證書

浏覽器安裝後都會内置很多CA機構的根證書,基本涵蓋全球CA機構,如谷歌浏覽器中的根證書如下:

快速了解https是如何保證安全的

這些根證書實際就是CA機構自己給自己頒發的數字證書,其中的資訊和頒發給網站的數字證書的格式是一樣的。

浏覽器根據網站數字證書中的頒發機構名稱,從根證書清單中查詢對用的根證書,如果不存在,則說明網站數字證書的頒發機構不受信任,不夠安全,是以驗證失敗,如果存在則繼續驗證。

  1. 浏覽器使用根證書中的公鑰,對數字簽名進行解密,如果能解密成功,說明指紋是CA機構使用私鑰進行加密的,如果解密失敗則說明數字簽名是僞造的。解密成功後獲得證書摘要。
  2. 浏覽器根據摘要算法主動生成摘要,和解密數字簽名得到的數字摘要進行對比,如果不一緻則說明證書内容被篡改了,否則說明該數字證書的确是CA機構簽發的。
  3. 浏覽器比較數字證書中的域名是否和請求中的一緻,如果不一緻則說明該數字證書雖然的确是CA機構簽發的,但并不是目标網站的數字證書。比如一個非法網站擁有CA簽發的數字證書,但它截取了通路某個百度的https請求,并響應浏覽器自己的證書,如果浏覽器不進行域名校驗,就會認為數字證書是正确的,進而整個會話被劫持。

5.證書鍊

繼續閱讀