HTTPS以及Fiddler抓取HTTPS協議

2021-08-08 02:35:22 字數 3797 閱讀 7585

一共有8個步驟,我們針對每一步,具體看看發生了什麼事:

第一步,客戶端發起明文請求:將自己支援的一套加密規則、以及乙個隨機數(random_c)傳送給伺服器。

第二步,伺服器初步響應:伺服器根據自己支援的加密規則,從客戶端發來的請求中選出一組加密演算法與hash演算法,生成隨機數,並將自己的身份資訊以證書(ca)的形式發回給瀏覽器。ca證書裡面包含了伺服器位址,加密公鑰,以及證書的頒發機構等資訊。這時伺服器給客戶端的包括選擇使用的加密規則、ca證書、乙個隨機數(random_s)。

第三步,客戶端接到伺服器的初步響應後做四件事情:

(1)證書校驗: 驗證證書的合法性(頒發證書的機構是否合法,證書中包含的**位址是否與正在訪問的位址一致等)。

(2)生成密碼:瀏覽器會生成一串隨機數的密碼(pre_master),並用ca證書裡的公鑰加密(enc_pre_master),用於傳給伺服器。

(3)計算協商金鑰:

此時客戶端已經獲取全部的計算協商金鑰需要的資訊:兩個明文隨機數 random_c 和 random_s 與自己計算產生的 pre-master,計算得到協商金鑰enc_key。

enc_key=fuc(random_c, random_s, pre-master)
(4)生成握手資訊:使用約定好的hash計算握手訊息,並使用協商金鑰enc_key及約定好的演算法對訊息進行加密。

第四步,客戶端將第三步產生的資料發給伺服器:

這裡要傳送的資料有三條:

(1)用公鑰加密過的伺服器隨機數密碼enc_pre_master

(2)客戶端發給伺服器的通知,"以後我們都要用約定好的演算法和協商金鑰進行通訊的哦"。

(3)客戶端加密生成的握手資訊。

第五步,伺服器接收客戶端發來的資料要做以下四件事情:(1)私鑰解密:使用自己的私鑰從接收到的enc_pre_master中解密取出密碼pre_master。

(2)計算協商金鑰:此時伺服器已經獲取全部的計算協商金鑰需要的資訊:兩個明文隨機數 random_c 和 random_s 與pre-master,計算得到協商金鑰enc_key。

enc_key=fuc(random_c, random_s, pre-master)
(3)解密握手訊息:使用協商金鑰enc_key解密客戶端發來的握手訊息,並驗證hash是否與客戶端發來的一致。

(4)生成握手訊息使用協商金鑰enc_key及約定好的演算法加密一段握手訊息,傳送給客戶端。

第六步,伺服器將第五步產生的資料發給客戶端:

這裡要發的資料有兩條:

(1)伺服器發給客戶端的通知,」聽你的,以後我們就用約定好的演算法和協商金鑰進行通訊哦「。

(2)伺服器加密生成的握手資訊。

第七步,客戶端拿到握手資訊解密,握手結束。

客戶端解密並計算握手訊息的hash,如果與服務端發來的hash一致,此時握手過程結束。

第八步,正常加密通訊

握手成功之後,所有的通訊資料將由之前協商金鑰enc_key及約定好的演算法進行加密解密。

這裡客戶端與伺服器互相傳送加密的握手訊息並驗證,目的是為了保證雙方都獲得了一致的密碼,並且可以正常的加密解密資料,為後續真正資料的傳輸做一次測試。另外,https一般使用的加密與hash演算法如下:非對稱加密演算法:rsa,dsa/dss對稱加密演算法:aes,rc4,3deshash演算法:md5,sha1,sha256其中非對稱加密演算法用於在握手過程中加密生成的密碼,對稱加密演算法用於對真正傳輸的資料進行加密,而hash演算法用於驗證資料的完整性。由於瀏覽器生成的密碼是整個資料加密的關鍵,因此在傳輸的時候使用了非對稱加密演算法對其加密。非對稱加密演算法會生成公鑰和私鑰,公鑰只能用於加密資料,因此可以隨意傳輸,而伺服器的私鑰用於對資料進行解密,所以伺服器都會非常小心的保管自己的私鑰,防止洩漏。

我們都知道,fiddler是個很好的**工具,可抓取協議請求用於除錯。關於fiddler抓取http協議的原理和配置比較簡單,對fiddler和客戶端稍作配置,便能使得fiddler輕易地獲取http請求。但是由於https協議的特殊性,要進一步地配置fiddler,我們首先要了解一下fiddler抓取https協議的原理才能更好地理解如何對fiddler進行配置。fiddler本身就是乙個協議**工具,在上一節https原理圖上,客戶端與伺服器端進行通訊的過程全部都由fiddler獲取到,也就是如下圖所示:

我們看到fiddler抓取https協議主要由以下幾步進行:

第一步,fiddler截獲客戶端傳送給伺服器的https請求,fiddler偽裝成客戶端向伺服器傳送請求進行握手 。

第二步,伺服器發回相應,fiddler獲取到伺服器的ca證書, 用根證書公鑰進行解密, 驗證伺服器資料簽名, 獲取到伺服器ca證書公鑰。然後fiddler偽造自己的ca證書, 冒充伺服器證書傳遞給客戶端瀏覽器。

第三步,與普通過程中客戶端的操作相同,客戶端根據返回的資料進行證書校驗、生成密碼pre_master、用fiddler偽造的證書公鑰加密,並生成https通訊用的對稱金鑰enc_key。

第四步,客戶端將重要資訊傳遞給伺服器, 又被fiddler截獲。fiddler將截獲的密文用自己偽造證書的私鑰解開, 獲得並計算得到https通訊用的對稱金鑰enc_key。fiddler將對稱金鑰用伺服器證書公鑰加密傳遞給伺服器。

第五步,與普通過程中伺服器端的操作相同,伺服器用私鑰解開後建立信任,然後再傳送加密的握手訊息給客戶端。

第六步,fiddler截獲伺服器傳送的密文, 用對稱金鑰解開, 再用自己偽造證書的私鑰加密傳給客戶端。

第七步,客戶端拿到加密資訊後,用公鑰解開,驗證hash。握手過程正式完成,客戶端與伺服器端就這樣建立了」信任「。

在之後的正常加密通訊過程中,fiddler如何在伺服器與客戶端之間充當第三者呢?

伺服器—>客戶端:fiddler接收到伺服器傳送的密文, 用對稱金鑰解開, 獲得伺服器傳送的明文。再次加密, 傳送給客戶端。

客戶端—>服務端:客戶端用對稱金鑰加密,被fiddler截獲後,解密獲得明文。再次加密,傳送給伺服器端。由於fiddler一直擁有通訊用對稱金鑰enc_key, 所以在整個https通訊過程中資訊對其透明。

從上面可以看到,fiddler抓取https協議成功的關鍵是根證書(具體是什麼,可google),這是乙個信任鏈的起點,這也是fiddler偽造的ca證書能夠獲得客戶端和伺服器端信任的關鍵。

接下來我們就來看如果設定讓fiddler抓取https協議。

注意以下操作的前提是,手機已經能夠連上fiddler,這部分的配置過程簡單就不贅述了,可參考:手機如何連線fiddler 。

如何繼續配置讓fiddler抓取到https協議呢?

(一)首先對fiddler進行設定:開啟工具欄->tools->fiddler options->https

選中capture https connects,因為我們要用fiddler獲取手機客戶端發出的https請求,所以中間的下拉列表中選中from remote clients only。選中下方ignore server certificate errors.

(二)然後,就是手機安裝fiddler證書。

這一步,也就是我們上面分析的抓取https請求的關鍵。

操作步驟很簡單,開啟手機瀏覽器,在瀏覽器位址輸入**伺服器ip和埠,會看到乙個fiddler提供的頁面。

fiddler 實現https抓包

1.fiddler設定 fiddler options https項進行設定,如下 2.ie 設定 連線 區域網設定 4.匯入證書 ie瀏覽器 工具 internet選項 內容 證書 證書 受信任的根證書頒發機構 5.測試下是否抓包成功 以上是爭對英文版,需要匯入證書 漢化版,只需勾選即可實現htt...

Fiddler抓包使用教程 Https

本文出自 趙彥軍的部落格 fiddler 預設下,fiddler不會捕獲https會話,需要你設定下。from all processes 抓取所有的 https 程式,包括 本機 和 手機 from browsers only 只抓取瀏覽器中的 https 請求 from non browsers...

支援https請求以及https請求的抓包

ios9推出的時候,蘋果希望大家使用https協議,來提高資料傳輸之間的安全性。下面我就從最簡單的 介紹,如何在工程中設定,來支援https的請求。一 證書準備篇 1.證書轉換 在伺服器人員,給你傳送的crt證書後,進到證書路徑,執行下面語句 openssl x509 in 你的證書.crt out...