https建立連線過程

2021-09-05 11:27:03 字數 1878 閱讀 8891

既然要公升級為https協議,那就很有必要知道https的原理是什麼,https是怎麼保證資訊只有通訊雙方能解析而不被第三方截獲導致資訊被竊取、篡改。

2.1 原理圖

下面是一張https建立連線的原理圖,下面會對每一步進行說明。

https建立連線

2.2 https建立連線過程

2.2.1 客戶端訪問https連線

這一步,就是相當於我們在瀏覽器上輸入url回車的過程。這個時候瀏覽器或者客戶端(接下來統一為客戶端)會把我們客戶端支援的加密演算法cipher suite(金鑰演算法套件)帶給服務端。

2.2.2 - 2.2.3 服務端傳送證書(公鑰)給客戶端

服務端接收cipher後,和自己支援的加密演算法進行比對,如果不符合,則斷開連線。否則,服務端會把符合的演算法和證書發給客戶端,包括證書時間、證書日期、證書頒發的機構。

2.2.4- 2.2.5 客戶端驗證服務端的證書

1、客戶端驗證證書,包括頒發證書的機構是否合法與是否過期,證書中包含的**位址是否與正在訪問的位址一致等

2、驗證通過後(或者使用者接受了不信任的證書),客戶端會生成乙個隨機字串,然後用服務端的公鑰進行加密。這裡就保證了只有服務端才能看到這串隨機字串(因為服務端擁有公鑰對應的私鑰,rsa解密,可以知道客戶端的隨機字串)。

3、生成握手資訊 用約定好的hash演算法,對握手資訊進行取hash,然後用隨機字串加密握手資訊和握手資訊的簽名hash值,把結果發給服務端。這裡之所以要帶上握手資訊的hash是因為,防止資訊被篡改。如果資訊被篡改,那麼服務端接收到資訊進行hash時,就會發現hash值和客戶端傳回來的不一樣。這裡就保證了資訊不會被篡改。

2.2.6 - 2.2.7 服務端接收加密資訊,解密得到客戶端提供的隨機字串

服務端接收到加密資訊後,首先用私鑰解密得到隨機字串。然後用隨機字串解密握手資訊,獲得握手資訊和握手資訊的hash值,服務端對握手資訊進行hash,比對客戶端傳回來的hash。如果相同,則說明資訊沒有被篡改。

服務端驗證完客戶端的資訊以後,同樣使用隨機字串加密握手資訊和握手資訊的hash值發給客戶端。

2.2.8 客戶端驗證服務端返回的握手資訊,完成握手

客戶端接收到服務端發回來的握手資訊後,用一開始生成的隨機字串對密文進行解密,得到握手資訊和握手資訊的hash值,像一步服務端驗證一樣對握手資訊進行校驗,校驗通過後,握手完畢。從這裡開始,客戶端和服務端的通訊就使用那串隨機字串進行aes對稱加密通訊。

2.3 驗證總結

使用rsa非對稱演算法,服務端向客戶端傳送公鑰,公鑰包含了網域名稱、頒發機構、過期日期。保證了公鑰的合法性和服務端的身份正確性(而不會被黑客冒充)

客戶端向第三方驗證公鑰的合法性,驗證通過後向服務端約定對稱加密的隨機字符號。保證了隨機字串只有通訊雙方知道。

接下來的通訊就使用這個隨機字符號進行加密通訊。因為隨機字串只有雙方知道,所以資訊不會被截獲。

為了驗證證書的合法性,首先客戶端要知道一些合法的證書機構,這就是我們所說的根證書。而根證書會儲存在使用者的瀏覽器或者其它客戶端,像jdk的根證書列表。

當然證書不可能只有幾個機構進行頒發的,所以證書的頒發是一級一級的。客戶端在驗證證書也是一級一級往下驗證。下面是阿里的證書:

阿里證書

最頂級的verisign class 3 public primary certification authori... 就是根證書了, 這個證書一般會儲存在客戶端,在客戶端安裝時就有一組根證書了,如果服務端根證書在客戶端的信任列表中,那麼就會向根證書驗證二級證書的合法性,然後再向二級證書機構驗證**證書的合法性,以此類推。

HTTPS建立連線過程詳解

現今https對乙個網路服務來說是必備的,但之前乙隻對https瀏覽器與伺服器建立連線的握手過程一知半解,下面進行一下總結 上面是一張建立https連線的流程圖,建立連線過程如下 1 客戶端傳送乙個隨機生成的隨機數加上將客戶端所支援的所有加密套件傳送給服務端,服務端收到客戶端的client hell...

HTTPS建立鏈結過程

第一階段 客戶端向服務端傳送加密通訊請求並攜帶 1.客戶端支援 ssl tls 版本 2.客戶端產生的隨機數,用於生成最後的會話秘鑰。3.客戶端支援的密碼套件 版本和密碼套件由伺服器進行選擇 第二階段 伺服器在收到客戶端發來的請求後,選擇上述版本和密碼套件後,同樣生成乙個隨機數,並攜帶伺服器的數字證...

ssl 原理和建立連線過程

ssl secure sockets layer 加密原理 和https的關係 ssl 位置 ssl握手 證書主要作用是在ssl握手中,我們來看一下ssl的握手過程 1.客戶端提交https請求 2.伺服器響應客戶,並把證書公鑰發給客戶端 3.客戶端驗證證書公鑰的有效性 4.有效後,會生成乙個會話金...