快速理解https是如何保证安全的
1.https作用
- 混合加密
- 身份驗證: 可以通過數字證書驗證對方身份
- 驗證數據完成性: 防止內容被中間人冒充或篡改
2. 基礎知識
-
數字摘要:通過hash函數對報文進行哈希,得到長度固定的字符串稱謂摘要, 這個過程是單向的,無法通過摘要反推原文。
-
數字簽名:對數字摘要進行非對稱加密后的密文,叫做數字簽名。
-
數字證書:可用于客戶端驗證服務端身份的證書,一般是由CA機構簽發的。數字證書包含頒發機構、過期時間、網站域名、網站公鑰、CA簽名。
-
CSR:CSR是Certificate Signing Request的英文縮寫,即數字證書簽名請求,網站只要把CSR文件提交給證書頒發機構后,證書頒發機構使用其【根證書私鑰】對CSR內容進行【簽名】,就生成了數字證書;CSR請求中包含網站生成的公鑰,因此CSR必定有對用的key,也就是私鑰.例如下圖是在線生成CSR的工具:
生成結果:
3. https流程
網站首先需要申請域名,然后使用域名生成 CSR 和 私鑰,然后向CA機構申請數字證書。
瀏覽器向網站發送https請求,URL中必須使用域名。
網站收到請求后,立刻響應數字證書。
瀏覽器收到數字證書后,在本地已授信的根證書列表中,查詢數字證書中的頒發機構的根證書;如果不存在則無法驗證,所以提示用戶該數字證書不安全,如果存在,則使用本地根證書對數字證書進行驗證,如果驗證失敗則提示用戶該數字證書不安全。如果證書沒有問題,瀏覽器自動生成一個隨機數(對稱密鑰)對請求報文進行加密,然后再使用數字證書中的公鑰對隨機數進行加密,然后將【請求密文】和【隨機數密文】發送給網站。
網站收到瀏覽器發來的密文后,首先使用私鑰解密【隨機數密文】得到【隨機數】,然后使用隨機數解密【請求報文】,此時SSL連接已建立,該連接以后的通信將一直使用該【隨機數】進行對稱加密。最后網站使用【隨機數】加密響應報文,并發送到瀏覽器。
瀏覽器接受到響應報文后,使用【隨機數】解密報文,然后使用【隨機數】加密請求。
4. 數字證書驗證主要過程
比如訪問百度收到的數字證書如下圖:
點擊URL框左邊的鎖即可查看證書,在證書的常規信息:
- 頒發給: baidu.com 即數字證書中的網站域名
- 頒發者: CA機構
- 有效期: 即數字證書的有效期
上圖示數字證書的詳情,點擊下方的【證書的詳情信息】可以打開證書的解釋,最重要的信息就是指紋和公鑰了。
指紋就是證書簽名,是CA對證書內容進行摘要后使用私鑰加密后的簽名。
公鑰是網站的公鑰。
瀏覽器安裝后都會內置很多CA機構的根證書,基本涵蓋全球CA機構,如谷歌瀏覽器中的根證書如下:
這些根證書實際就是CA機構自己給自己頒發的數字證書,其中的信息和頒發給網站的數字證書的格式是一樣的。
瀏覽器根據網站數字證書中的頒發機構名稱,從根證書列表中查詢對用的根證書,如果不存在,則說明網站數字證書的頒發機構不受信任,不夠安全,因此驗證失敗,如果存在則繼續驗證。
瀏覽器使用根證書中的公鑰,對數字簽名進行解密,如果能解密成功,說明指紋是CA機構使用私鑰進行加密的,如果解密失敗則說明數字簽名是偽造的。解密成功后獲得證書摘要。
瀏覽器根據摘要算法主動生成摘要,和解密數字簽名得到的數字摘要進行對比,如果不一致則說明證書內容被篡改了,否則說明該數字證書的確是CA機構簽發的。
瀏覽器比較數字證書中的域名是否和請求中的一致,如果不一致則說明該數字證書雖然的確是CA機構簽發的,但并不是目標網站的數字證書。比如一個非法網站擁有CA簽發的數字證書,但它截取了訪問某個百度的https請求,并響應瀏覽器自己的證書,如果瀏覽器不進行域名校驗,就會認為數字證書是正確的,進而整個會話被劫持。
這也是為什么https要求必須是域名,否者會話可能被劫持。如下圖,當https請求中使用ip訪問百度時,瀏覽器也會提示不安全,以避免會話被劫持:
流程圖:
關系圖:
5.證書鏈
可知百度的數字證書并不是一級CA機構簽發的,而是二級CA機構簽發的。
總結
以上是生活随笔為你收集整理的快速理解https是如何保证安全的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国大学MOOC 计算机组成原理第5章
- 下一篇: 你不会真的以为自己懂得计算机网络吧?