https原理初探

前言

       關於總結https原理,個人出發點比較簡單,就是一直以來覺得本身相對了解http與https的區別,可是真正跟別人聊起來才發現,其實連只知其一;不知其二都算不上,只知道部署https服務端時須要申請證書,而後證書會被下發到請求443https端口的客戶端,之間進行一些公鑰私鑰加密的一些行爲,可是其中有不少步驟是須要咱們去理解的,好比對稱與非對稱加密使用的地方、整個協商的過程、和咱們使用Charles抓包https的原理。算法

       下面就以流程圖的方式,在我理解的視角分享一下這些原理。安全

正文

https概述

       咱們使用的普通的http協議,全部數據都是明文傳輸,任何人都能輕易的從網絡傳輸中獲取有效的數據,而https是創建於http的基礎上,加上了ssl(Secure Sockets Layer安全套接層)協議的網絡傳輸協議,其中經過數字證書、對稱與非對稱加密、數據完整性摘要等技術,完成數據傳輸的保密性、完整性。服務器

客戶端與服務端交互流程

       如下來講一下使用https協議的過程當中,客戶端與服務端交互的大概流程,以下圖:基本流程爲客戶端首次驗證服務端證書有效性(1——4步);客戶端與服務端協商加密與數據摘要算法(5);交換客戶端對稱加密密鑰流程(6——8);最後確認https能力的邏輯(9——11)。 網絡

image

加密及摘要算法使用方式

       其中對稱加密、非對稱加密、數據摘要算法使用的詳細細節,以下圖所示:圖來源於csdn,感受很不錯來接用一下。工具

       下圖中的接收方就是咱們上面說的服務端;接收方公鑰:服務端下發的證書;發送方私鑰:客戶端本身生成的字符串A。 所以能夠經過這樣的一種加密及數據摘要算法,保證https協議中數據傳輸的保密性及完整性。 學習

image

Charles抓包https

       上的面咱們說了https相對http的優勢及交互邏輯,https的特色就是加密傳輸,但咱們就無法獲取數據內容了嗎,其實不是,下面咱們你們幾乎都會用到Charles抓包工具也能夠完成https協議的數據內容抓取,其大概原理就是在客戶端的視角把本身僞形成服務端、在服務端的視角把本身僞形成客戶端。網絡傳輸協議

       其中Charles配置抓包https的流程以下:加密

  1. pc端Charles下載本身對應的證書;
  2. 使用客戶端安裝pc端上Charles的證書,輸入網址下載;
  3. 客戶端信任該證書;
  4. pc端Charles設置443https端口代理;
  5. 客戶端開始調用進行抓包。

Charles https抓包原理

  1. Charles攔截客戶端的請求,假裝成客戶端向服務器進行請求;
  2. 服務器向「客戶端」(其實是Charles)返回服務器的CA證書;
  3. Charles攔截服務器的響應,獲取服務器證書公鑰,而後本身製做一張證書,將服務器證書替換後發送給客戶端。(這一步,Charles拿到了服務器證書的公鑰)
  4. 客戶端接收到「服務器」(其實是Charles)的證書後,生成一個對稱密鑰,用Charles的公鑰加密,發送給「服務器」(Charles)
  5. Charles攔截客戶端的響應,用本身的私鑰解密對稱密鑰,而後用服務器證書公鑰加密,發送給服務器。(這一步,Charles拿到了對稱密鑰)
  6. 服務器用本身的私鑰解密對稱密鑰,向「客戶端」(Charles)發送響應
  7. Charles攔截服務器的響應,替換成本身的證書後發送給客戶端

結語

        經過本文,我這邊闡述了https的交互原理、加解密細節、使用Charles工具抓包https的簡單流程及原理,但願經過這個總結能和你們一塊兒學習,若是有不對的地方還請及時指正。.net

參考資料

https代理

blog.csdn.net/xiaoming100…

www.jianshu.com/p/14cd2c9d2…

Charles抓包https

www.jianshu.com/p/ec0a38d9a…

相關文章
相關標籤/搜索