關於總結https原理,個人出發點比較簡單,就是一直以來覺得本身相對了解http與https的區別,可是真正跟別人聊起來才發現,其實連只知其一;不知其二都算不上,只知道部署https服務端時須要申請證書,而後證書會被下發到請求443https端口的客戶端,之間進行一些公鑰私鑰加密的一些行爲,可是其中有不少步驟是須要咱們去理解的,好比對稱與非對稱加密使用的地方、整個協商的過程、和咱們使用Charles抓包https的原理。算法
下面就以流程圖的方式,在我理解的視角分享一下這些原理。安全
咱們使用的普通的http協議,全部數據都是明文傳輸,任何人都能輕易的從網絡傳輸中獲取有效的數據,而https是創建於http的基礎上,加上了ssl(Secure Sockets Layer安全套接層)協議的網絡傳輸協議,其中經過數字證書、對稱與非對稱加密、數據完整性摘要等技術,完成數據傳輸的保密性、完整性。服務器
如下來講一下使用https協議的過程當中,客戶端與服務端交互的大概流程,以下圖:基本流程爲客戶端首次驗證服務端證書有效性(1——4步);客戶端與服務端協商加密與數據摘要算法(5);交換客戶端對稱加密密鑰流程(6——8);最後確認https能力的邏輯(9——11)。 網絡
其中對稱加密、非對稱加密、數據摘要算法使用的詳細細節,以下圖所示:圖來源於csdn,感受很不錯來接用一下。工具
下圖中的接收方就是咱們上面說的服務端;接收方公鑰:服務端下發的證書;發送方私鑰:客戶端本身生成的字符串A。 所以能夠經過這樣的一種加密及數據摘要算法,保證https協議中數據傳輸的保密性及完整性。 學習
上的面咱們說了https相對http的優勢及交互邏輯,https的特色就是加密傳輸,但咱們就無法獲取數據內容了嗎,其實不是,下面咱們你們幾乎都會用到Charles抓包工具也能夠完成https協議的數據內容抓取,其大概原理就是在客戶端的視角把本身僞形成服務端、在服務端的視角把本身僞形成客戶端。網絡傳輸協議
其中Charles配置抓包https的流程以下:加密
經過本文,我這邊闡述了https的交互原理、加解密細節、使用Charles工具抓包https的簡單流程及原理,但願經過這個總結能和你們一塊兒學習,若是有不對的地方還請及時指正。.net
https代理
Charles抓包https