Fiddler抓取https設定及其原理

2022-05-31 14:39:09 字數 3164 閱讀 4277

2018-02-02

目錄

1 https握手過程

2 fiddler抓取https過程

3 fiddler抓取https設定

參考數字簽名是什麼?

https 並非是應用層的一種新協議。只是 http 通訊介面部分用 ssl (安全套接字層)和tls (安全傳輸層協議)代替而已。即新增了加密及認證機制的 http 稱為 https ( http secure )。

https = http + 認證 + 加密 + 完整性保護

握手過程如下:

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

第二步:伺服器選出一組加密規則和hash演算法,並將自己的身份資訊以證書(ca:包含**位址、加密公鑰、證書頒發機構等資訊)和乙個隨機數(random_s)發給客戶端

第三步:客戶端接到伺服器的響應

驗證證書的合法性(頒發證書的機構是否合法,證書中包含的**位址是否與正在訪問的位址一致等)。如果證書受信任,則瀏覽器欄裡面會顯示乙個小鎖頭,否則會給出證書不受信的提示。 

如果證書受信任,或者是使用者接受了不受信的證書,客戶端做以下事情:

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

計算協商金鑰:enc_key=fuc(random_c, random_s, pre-master)

生成握手資訊:使用約定好的hash計算握手訊息,並使用協商金鑰enc_key及約定好的演算法對訊息進行加密。

傳送以下資訊到伺服器:用公鑰加密過的伺服器隨機數密碼enc_pre_master

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

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

第四步,伺服器接收客戶端發來的資料要做以下四件事情:

私鑰解密:使用自己的私鑰從接收到的enc_pre_master中解密取出密碼pre_master。

計算協商金鑰:enc_key=fuc(random_c, random_s, pre-master)

解密握手訊息:使用協商金鑰enc_key解密客戶端發來的握手訊息,並驗證hash是否與客戶端發來的一致。

生成握手訊息使用協商金鑰enc_key及約定好的演算法加密一段握手訊息,傳送給客戶端。這裡要發的資料有兩條:伺服器發給客戶端的通知,」聽你的,以後我們就用約定好的演算法和協商金鑰進行通訊哦「。

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

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

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

第六步,正常加密通訊

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

這裡瀏覽器與**互相傳送加密的握手訊息並驗證,目的是為了保證雙方都獲得了一致的密碼和hash演算法,並且可以正常的加密解密資料,為後續真正資料的傳輸做一次測試。

從握手過程,我們可以得知:

hash演算法確保

我們都知道,fiddler是個很好的**工具,可抓取協議請求用於除錯。

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

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

第二步,伺服器發回相應,fiddler獲取到伺服器的ca證書, 用根證書(這裡的根證書是ca認證中心給自己頒發的證書)公鑰進行解密, 驗證伺服器資料簽名,獲取到伺服器ca證書公鑰。然後fiddler偽造自己的ca證書(這裡的ca證書,也是根證書,只不過是fiddler偽造的根證書), 冒充伺服器證書傳遞給客戶端瀏覽器。

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

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

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

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

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

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

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

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

從上面可以看到,fiddler相當於**,客戶端和伺服器互動都要通過fiddler,fiddler抓取https協議成功的關鍵是根證書(根證書是ca認證中心給自己頒發的證書,是信任鏈的起始點。安裝根證書意味著對這個ca認證中心的信任。),這是乙個信任鏈的起點,這也是fiddler偽造的ca證書能夠獲得客戶端和伺服器端信任的關鍵。

沒有受信任的fiddler根證書,不能讓客戶端相信fiddler偽造的ca證書,從而得到pre_master。

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

fiddler選單->tools->telerik fiddler options

在跳出的對話方塊點選『yes』

在跳出的對話方塊點選『是(y)』後,通過ie的internet選項,我們可以看到fiddler的根證書被加入到「受信任的根證書頒發機構」。

[1] **https以及fiddler抓取https協議

[2] https的工作原理

[3] 修改配置使fiddler可以檢視https請求

fiddler抓取HTTPS請求

https即 http over ssl,使用ssl加密傳輸資料,http是明文傳輸資料的,所以https必然比http更安全。即使傳輸資料被劫持,劫持者也無法獲取傳輸明文。從而保證了系統的安全性,尤其對於交易支付類業務來說,https的安全性尤為重要。作為測試免不了會使用工具抓取請求,但是fidd...

HTTPS以及Fiddler抓取HTTPS協議

一共有8個步驟,我們針對每一步,具體看看發生了什麼事 第一步,客戶端發起明文請求 將自己支援的一套加密規則 以及乙個隨機數 random c 傳送給伺服器。第二步,伺服器初步響應 伺服器根據自己支援的加密規則,從客戶端發來的請求中選出一組加密演算法與hash演算法,生成隨機數,並將自己的身份資訊以證...

fiddler抓取手機https資料

隨著移動web逐漸普及,前端抓包工具fidder相信是各位攻城師 庫中必備之物。今天小弟跟大家介紹下,fiddler怎樣在https中抓包。http抓包的方法當你擁有神器fidder相信已經掌握,本文就不作闡述了,今天重點https抓包,大家都知道https是通過443埠訪問,通過ssl保護資料的安...