一、https請求流程圖
1、https在真正請求資料前,會先與伺服器有幾次握手驗證,以證明相互的身份,如下圖:
二、驗證流程
https通訊進行的準備工作。最主要的是客戶端預置證書機構的根證書、伺服器端生成證書。
1、客戶端
在目前主流瀏覽器,會內建一些常用機構頒發的根證書(證書頒發機構的公鑰)
2、服務端
1、某伺服器要申請證書,必須先自行生成一對公私鑰,;
2、伺服器將公鑰交給第三方證書機構買證書;
3、證書機構用自己的私鑰對服務端的公鑰進行簽名(即用證書機構的公鑰+此簽名, 可以校驗服務端的公鑰的正確性);
4、頒發證書,實際就是將伺服器的公鑰返回,並附加上機構用私鑰做的簽名;
5、伺服器端部署此證書;
1、客戶端發起乙個https的請求,把自身支援的一系列cipher suite(金鑰演算法套件,簡稱cipher)傳送給服務端。
2、服務端接收到客戶端所有的cipher後與自身支援的對比,如果不支援則連線斷開,反之則會從中選出一種加密演算法和hash演算法以證書的形式返回給客戶端 證書中還包含了公鑰
頒證機構 ** 失效日期等等(此為明文。明文的含義是,本證書被截獲、篡改均可被客戶端識別)。
3、客戶端收到服務端響應後會做以下幾件事:
3.1 驗證證書的合法性
頒發證書的機構是否合法與是否過期,證書中包含的**位址是否與正在訪問的位址一致等。
按證書裡頒布機構的資訊,到本地取出對應機構的證書(機構公鑰),對伺服器的公鑰簽名驗證。如簽名驗證正確,說明此伺服器公鑰是經此機構保證的。
如果本地沒有找到對應的機構證書、或簽名認證不正確,則驗證證書失敗。
3.2 生成隨機密碼
如果證書驗證通過,或者使用者接受了不授信的證書,此時瀏覽器會生成一串隨機數,然後用證書中的公鑰加密。
3.3 hash握手資訊
用最開始約定好的hash方式,把握手訊息取hash值, 然後用 隨機數加密 「握手訊息+握手訊息hash值(簽名)」 並一起傳送給服務端。
在這裡之所以要取握手訊息的hash值,主要是把握手訊息做乙個簽名,用於驗證握手訊息在傳輸過程中沒有被篡改過。
4、服務端拿到客戶端傳來的密文,用自己的私鑰來解密,得到隨機數密碼;再用隨機數密碼解密握手訊息與hash值,並與傳過來的hash值做對比確認是否一致。然後用隨機密
碼加密一段握手訊息(握手訊息+握手訊息的hash值 )給客戶端。
5、客戶端用隨機數解密並計算握手訊息的hash,如果與服務端發來的hash一致,此時握手過程結束,之後所有的通訊資料將由之前瀏覽器生成的隨機密碼並利用對稱加密演算法
進行加密, 因為這串金鑰只有客戶端和服務端知道,所以即使中間請求被攔截也是沒法解密資料的,以此保證了通訊的安全
演算法
非對稱加密演算法:rsa,dsa/dss 在客戶端與服務端相互驗證的過程中用的是對稱加密
對稱加密演算法:aes,rc4,3des 客戶端與服務端相互驗證通過後,以隨機數作為金鑰時,就是對稱加密
hash演算法:md5,sha1,sha256 在確認握手訊息沒有被篡改時
https原理解析
https基礎流程
HTTPS加密流程
1 客戶端發起https請求首先向服務端傳送客戶端ssl tls協議版本號 支援的加密演算法種類 如 rsa加密演算法,des對稱加密演算法,sha1摘要演算法 產生隨機數等資訊 2 服務端向瀏覽器回傳 ssl tls 協議版本號 選擇一種客戶端瀏覽器支援的加密演算法和hash演算法 隨機數 服務端...
HTTPS 實現流程
https協議其實就是http over tsl,基礎的http通訊是明文的,有三大風險 資訊被竊聽,資訊被篡改,身份的冒充。tsl協議就是為防範這些風險存在的。tsl使用非對稱加密保護下的對稱加密在保證了通訊效率的同時防止竊聽,使用證書體系防止資訊篡改和身份冒認。注意 tsl協議握手階段的通訊是明...
HTTPS通訊流程
https的通訊流程 1 客戶端向伺服器發起ssl通訊,報文中包含客戶端支援的ssl的指定版本,加密元件列表 所使用的加密演算法及金鑰長度 2 伺服器的響應報文中,包含ssl版本以及加密元件,伺服器的加密元件內容是從客戶端發來的加密元件列表中篩選出來的,伺服器還會發乙個公開金鑰並且帶有公鑰證書 3 ...