HTTPS 通信流程

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

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

相關文章
相關標籤/搜索