1. 程式人生 > >HTTPS 通訊流程

HTTPS 通訊流程

初學 有效期 數字 安全 加密 不同 log 公開 簡介

原文地址 https://blog.csdn.net/wangweilica6/article/details/50171457

一、簡介 前一篇文章,我總結了下,如何部署https服務,開通ssl通道。但是對於https整個通信流程還有許多疑惑的地方,所以花了好幾天看了各種資料,其中有的資料也誤導了我,導致我走了些彎路。接下來我就來總結一下,幫助初學者理清https通信流程。 二、名詞解釋 1、簽名 簽名就是在信息的後面再加上一段內容,可以證明信息沒有被修改過,怎麽樣可以達到這個效果呢?一般是對信息做一個hash計算得到一個hash值,註意,這個過程是不可逆的,也就是說無法通過hash值得出原來的信息內容。在把信息發送出去時,把這個hash值加密後做為一個簽名和信息一起發出去。接收方在收到信息後,會重新計算信息的hash值,並和信息所附帶的hash值(解密後)進行對比,如果一致,就說明信息的內容沒有被修改過,因為這裏hash計算可以保證不同的內容一定會得到不同的hash值,所以只要內容一被修改,根據信息內容計算的hash值就會變化。當然,不懷好意的人也可以修改信息內容的同時也修改hash值,從而讓它們可以相匹配,為了防止這種情況,hash值一般都會加密後(也就是簽名)再和信息一起發送,以保證這個hash值不被修改。但是客戶端如何解密呢?這就涉及到數字證書了。 2、數字證書 主要包含這幾大塊: · 證書的發布機構 · 證書的有效期 · 公鑰 · 證書所有者(Subject) · 簽名所使用的算法 · 指紋以及指紋算法 數字證書可以保證數字證書裏的公鑰確實是這個證書的所有者(Subject)的,或者證書可以用來確認對方的身份。 3、 公鑰私鑰 剛開始的時候以為https只能用公鑰進行加密,私鑰解密,後來看來“公鑰密碼體制”,才知道,其實兩者都可以加密、解密。 4、RSA(非對稱加密) RSA是一種公鑰密碼體制,現在使用得很廣泛。公鑰公開,私鑰保密,它的加密解密算法是公開的。由公鑰加密的內容可以並且只能由私鑰進行解密,並且由私鑰加密的內容可以並且只能由公鑰進行解密。也就是說,RSA的這一對公鑰、私鑰都可以用來加密和解密,並且一方加密的內容可以由並且只能由對方進行解密。可用於驗證hTTPS中各種密鑰的加密。 5、對稱加密 加密使用的密鑰和解密使用的密鑰是相同的。因此對稱加密算法要保證安全性的話,密鑰要做好保密,只能讓使用的人知道,不能對外公開。 三、通信流程 為了搞清楚,https是怎樣運轉的,接下來是借鑒一篇博文,並稍加改動,形象易懂的解釋了整個流程。 step1: “客戶”向服務端發送一個通信請求 “客戶”->“服務器”:你好 step2: “服務器”向客戶發送自己的數字證書。證書中有一個公鑰用來加密信息,私鑰由“服務器”持有 “服務器”->“客戶”:你好,我是服務器,這裏是我的數字證書 step3: “客戶”收到“服務器”的證書後,它會去驗證這個數字證書到底是不是“服務器”的,數字證書有沒有什麽問題,數字證書如果檢查沒有問題,就說明數字證書中的公鑰確實是“服務器”的。檢查數字證書後,“客戶”會發送一個隨機的字符串給“服務器”用私鑰去加密。 “客戶”->“服務器”:向我證明你就是服務器,這是一個隨機字符串 step4:服務器把加密的結果返回給“客戶”。 “服務器”->“客戶”:{一個隨機字符串}(用私鑰進行RSA加密) step5:“客戶”用公鑰解密這個返回結果,如果解密結果與之前生成的隨機字符串一致,那說明對方確實是私鑰的持有者,或者說對方確實是“服務器”。 驗證“服務器”的身份後,“客戶”生成一個對稱加密算法和密鑰,用於後面的通信的加密和解密。這個對稱加密算法和密鑰,“客戶”會用公鑰加密後發送給“服務器”,別人截獲了也沒用,因為只有“服務器”手中有可以解密的私鑰。這樣,後面“服務器”和“客戶”就都可以用對稱加密算法來加密和解密通信內容了。 “服務器”->“客戶”:{OK,已經收到你發來的對稱加密算法和密鑰!有什麽可以幫到你的?}(用密鑰進行對稱加密) “客戶”->“服務器”:{我的帳號是aaa,密碼是123,把我的余額的信息發給我看看}(用密鑰進行對稱加密) “服務器”->“客戶”:{你好,你的余額是100元}(用密鑰進行對稱加密) --------------------- 本文來自 wangweilica6 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/wangweilica6/article/details/50171457?utm_source=copy

HTTPS 通訊流程