Https 原理與工作流程及證書鏈校驗


本文為博主原創,未經允許不得轉載: 

   目錄  
     HTTP傳輸三大風險
  

http傳輸三大風險

  

安全通信原則

   https就是為了解析http上面的三個風險誕生的, 一般我們認為安全的通信需要包括以下四個原則: 機密性完整性身份認證不可否認

 

HTTPS定義

  HTTPS 是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性。

HTTPS 在HTTP 的基礎下加入SSL,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。這個系統提供了身份驗證與加密通訊方法。

 

 

TLS/SSL 協議及加密算法

  HTTPS 協議的主要功能基本都依賴於 TLS/SSL 協議,SSL 全稱為安全套接層(Secure Sockets Layer),

  TLS/SSL 的功能實現主要依賴於三類基本算法:散列函數 、對稱加密和非對稱加密,

其利用非對稱加密實現身份認證和密鑰協商,對稱加密算法采用協商的密鑰對數據加密,基於散列函數驗證信息的完整性

  使用對稱密鑰的好處是解密的效率比較快,使用非對稱密鑰的好處是可以使得傳輸的內容不能被破解,因為就算你攔截到了數據,

但是沒有對應的私鑰,也是不能破解內容的。就比如說你搶到了一個保險櫃,但是沒有保險櫃的鑰匙也不能打開保險櫃。

那我們就將對稱加密與非對稱加密結合起來,充分利用兩者各自的優勢,在交換密鑰環節使用非對稱加密方式,之后的建立通信交換報文階段則使用對稱加密方式

  具體做法是:發送密文的一方使用對方的公鑰進行加密處理“對稱的密鑰”,然后對方用自己的私鑰解密拿到“對稱的密鑰”,

這樣可以確保交換的密鑰是安全的前提下,使用對稱加密方式進行通信。所以,HTTPS采用對稱加密和非對稱加密兩者並用的混合加密機制。 

  常用算法

  • 非對稱加密算法:RSA,DSA/DSS

  • 對稱加密算法:AES,RC4,3DES

  • HASH算法:MD5,SHA1,SHA256

 

https 工作流程

  https流程圖如下:
  
  1. client向server發送請求https://baidu.com,然后連接到server的443端口。

  2. 服務端必須要有一套數字證書,可以自己制作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面,這套證書其實就是一對公鑰和私鑰。

  3. 傳送證書 這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間、服務端的公鑰,第三方證書認證機構(CA)的簽名,服務端的域名信息等內容。

  4. 客戶端解析證書 這部分工作是由客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那么就生成一個隨機值(密鑰)。然后用證書對該隨機值進行加密。

  5. 傳送加密信息 這部分傳送的是用證書加密后的密鑰(隨機值),目的就是讓服務端得到這個密鑰(隨機值),以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。

  6. 服務端加密信息 服務端用私鑰解密,得到了客戶端傳過來的密鑰(隨機值),然后把內容通過該值進行對稱加密

  7. 傳輸加密后的信息 這部分信息是服務端用密鑰(隨機值)對稱加密后的信息,可以在客戶端被還原。

  8. 客戶端解密信息 客戶端用之前生成的密鑰(隨機值)解密服務端傳過來的信息,於是獲取了解密后的內容。

    上述流程中的3,4,5即為 密鑰協商交換算法 的過程。密鑰交換協商機制是在身份認證的前提下,規避偷窺的風險。通俗的說,即使有攻擊這在偷窺客戶端與服務器的網絡傳輸,

  客戶端依然可以利用密鑰協商機制與服務器端協商出一個只有二者可知的用來對於應用層數據進行加密的密鑰(也稱“會話密鑰”)。密鑰協商交換算法具體可看這篇文章:

  https://blog.csdn.net/CHYabc123456hh/article/details/108788580

    https 請求的過程中,還可以使用hash算法或簽名算法,校驗請求或響應的參數是否被篡改。client 端和server約定好的hash算法,對請求體或響應體進行摘要計算,

  在收到請求時,通過以上流程解密得到請求體,再使用hash算法對請求體進行hash計算,如果計算的值與另一端傳過來的值相同時,則證明請求體沒有被篡改。反之,請求被篡改。

 

HTTPS協議和HTTP協議的區別

  • https協議需要到ca申請證書,一般免費證書很少,需要交費。

  • http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。

  • http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。

  • http的連接很簡單,是無狀態的 。

  • HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議, 要比http協議安全。

  

CA機構

  CA(Certificate Authority)機構 為證書頒發機構,其頒布的均為首認證可信的證書,在使用過程中瀏覽器不會彈出不可信錯誤。

SSL證書可以向CA機構通過付費的方式申請,也可以自己制作。
CA機構頒發的證書價格非常昂貴,而且有效期一般只有一年到三年不等(年數不同,價格也不同),

過期之后還要再次交錢申請,因此一般只有企業才會申請證書。

證書中主要包含:

  • 證書頒發機構:用於尋找鏈中的下一個驗證節點

  • 證書的有效期:比如瀏覽器要根據這個值來判斷證書是否已過期

  • 證書申請信息:比如瀏覽器要判斷改證書是否可用於當前訪問的域名

  • 公鑰:用於后續和服務端通信的秘鑰,這個公鑰和當初生成 CSR 時的公鑰是一個東西,因為只有它是和服務器的私鑰是一對的

  • 簽名:用於驗證證書內容沒有被篡改

在瀏覽器查看 www.baidu.com 域名的 證書:

 

 通過這種方式可以查看域名對應的證書的版本,簽名算法,有效期,頒發者,使用者等等。

 

證書鏈

  我們使用的證書都是由專門的CA機構頒發,根證書有統一的CA機構頒發,在根證書基礎上頒發二級或三級證書具有CA的二級機構進行簽發。

 

   csdn 博客用的證書如上,其中DigiCert為頂端根證書,GeoTrust CN RSA CA G1為中間證書, *.csdn.net 為服務器證書,

當你點擊對應的證書,會顯示頒發者之間的關系,這種關系便形成證書鏈。如下圖所示:

 

   在證書鏈中,通常分三級結構,根證書,中間證書和服務器實體證書,正確的證書鏈順序中服務器實體證書處在最底端,里面包含了些服務器域名,

服務器公鑰和簽名值等。服務器證書上一級是中間證書,中間證書就是上面提到的由權威CA機構授權的二級機構,可以由它來簽發服務器證書。

中間證書可以是由多張證書組合在一起,最上級的是根證書,也就是CA機構,對服務器身份進行校驗時,需要驗證一整個證書鏈,

由於瀏覽器中集成了權威CA機構的根證書,因此主要是校驗中間證書和服務器實體證書的簽名值是否正確。

  校驗服務器身份需要驗證整個證書鏈,從服務器實體證書開始,服務器實體證書的簽發者是上一級中間證書的使用者,中間證書的簽發者是上一級根證書的使用者。

每一級證書都有簽名值,根證書使用自己的根CA公鑰驗證自己的簽名,也用來驗證中間證書的簽名值,中間證書的公鑰用來驗證下一級的服務器實體證書簽名值,以此構成一條信任鏈。

   

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM