最近想嘗試基於Fiddler的錄製功能作一些接口的獲取和處理工做,碰到的一個問題就是簡單鏈接Fiddler只能抓取HTTP協議,關鍵的登陸請求等HTTPS協議都沒有捕捉到,因此想讓Fiddler可以同時抓取到HTTPS和HTTP協議,設置只是很小的一步,關鍵是瞭解HTTPS協議的原理、Fiddler抓取HTTPS協議的原理,而後才能更好的理解如何進行設置。本文主要由三部分組成,第一部分用比較通俗形象的方式簡述了HTTPS的原理,第二部分則是在第一部分的基礎上介紹Fiddler抓取HTTPS協議的原理,最後第三部分就是如何對Fiddler及手機進行設置讓其捕捉HTTPS協議。 html
1、淺談HTTPS 算法
咱們都知道HTTP並不是是安全傳輸,在HTTPS基礎上使用SSL協議進行加密構成的HTTPS協議是相對安全的。目前愈來愈多的企業選擇使用HTTPS協議與用戶進行通訊,如百度、谷歌等。HTTPS在傳輸數據以前須要客戶端(瀏覽器)與服務端(網站)之間進行一次握手,在握手過程當中將確立雙方加密傳輸數據的密碼信息。網上有諸多資料,有些寫得過於晦澀難懂,尤爲是須要密碼學的一些知識。我作了一下簡單的整理,刨除複雜的底層實現,單從理解SSL協議的角度宏觀上認識一下HTTPS。一言以弊之,HTTPS是經過一次非對稱加密算法(如RSA算法)進行了協商密鑰的生成與交換,而後在後續通訊過程當中就使用協商密鑰進行對稱加密通訊。HTTPS協議傳輸的原理和過程簡圖以下所示: 瀏覽器
HTTPS協議傳輸原理 安全
一共有8個步驟,咱們針對每一步,具體看看發生了什麼事: 服務器
這裏客戶端與服務器互相發送加密的握手消息並驗證,目的是爲了保證雙方都得到了一致的密碼,而且能夠正常的加密解密數據,爲後續真正數據的傳輸作一次測試。另外,HTTPS通常使用的加密與HASH算法以下:非對稱加密算法:RSA,DSA/DSS對稱加密算法:AES,RC4,3DESHASH算法:MD5,SHA1,SHA256其中非對稱加密算法用於在握手過程當中加密生成的密碼,對稱加密算法用於對真正傳輸的數據進行加密,而HASH算法用於驗證數據的完整性。因爲瀏覽器生成的密碼是整個數據加密的關鍵,所以在傳輸的時候使用了非對稱加密算法對其加密。非對稱加密算法會生成公鑰和私鑰,公鑰只能用於加密數據,所以能夠隨意傳輸,而服務器的私鑰用於對數據進行解密,因此服務器都會很是當心的保管本身的私鑰,防止泄漏。 dom
2、Fiddler抓取HTTPS協議原理 工具
咱們都知道,Fiddler是個很好的代理工具,可抓取協議請求用於調試。關於Fiddler抓取HTTP協議的原理和配置比較簡單,對Fiddler和客戶端稍做配置,便能使得Fiddler輕易地獲取HTTP請求。可是因爲HTTPS協議的特殊性,要進一步地配置Fiddler,咱們首先要了解一下fiddler抓取HTTPS協議的原理才能更好地理解如何對fiddler進行配置。Fiddler自己就是一個協議代理工具,在上一節HTTPS原理圖上,客戶端與服務器端進行通訊的過程所有都由Fiddler獲取到,也就是以下圖所示: 測試
Fiddler抓取HTTPS協議原理圖 網站
咱們看到Fiddler抓取HTTPS協議主要由如下幾步進行: 加密
在以後的正常加密通訊過程當中,Fiddler如何在服務器與客戶端之間充當第三者呢?
服務器—>客戶端:Fiddler接收到服務器發送的密文, 用對稱密鑰解開, 得到服務器發送的明文。再次加密, 發送給客戶端。
客戶端—>服務端:客戶端用對稱密鑰加密,被Fiddler截獲後,解密得到明文。再次加密,發送給服務器端。因爲Fiddler一直擁有通訊用對稱密鑰enc_key, 因此在整個HTTPS通訊過程當中信息對其透明。
從上面能夠看到,Fiddler抓取HTTPS協議成功的關鍵是根證書(具體是什麼,可Google),這是一個信任鏈的起點,這也是Fiddler僞造的CA證書可以得到客戶端和服務器端信任的關鍵。
接下來咱們就來看若是設置讓Fiddler抓取HTTPS協議。
3、Fiddler抓取HTTPS設置
注意如下操做的前提是,手機已經可以連上Fiddler,這部分的配置過程簡單就不贅述了,可參考:手機如何鏈接Fiddler 。
如何繼續配置讓Fiddler抓取到HTTPS協議呢?
(一)首先對Fiddler進行設置:打開工具欄->Tools->Fiddler Options->HTTPS
對Fiddler進行設置
選中Capture HTTPS CONNECTs,由於咱們要用Fiddler獲取手機客戶端發出的HTTPS請求,因此中間的下拉菜單中選中from remote clients only。選中下方Ignore server certificate errors.
(二)而後,就是手機安裝Fiddler證書。
這一步,也就是咱們上面分析的抓取HTTPS請求的關鍵。
操做步驟很簡單,打開手機瀏覽器,在瀏覽器地址輸入代理服務器IP和端口,會看到一個Fiddler提供的頁面。
接着點擊最下方的FiddlerRoot certificate,這時候點擊肯定安裝就能夠下載Fiddler的證書了。
下載安裝完成好後,咱們用手機客戶端或者瀏覽器發出HTTPS請求,Fiddler就能夠截獲到了,就跟截獲普通的HTTP請求同樣。
好啦,以上就是關於HTTPS的簡介以及Fiddler如何獲取HTTPS協議的原理和配置,看到Fiddler整齊劃一地截獲到HTTP和複雜的HTTPS協議,內心還有點小激動呢。
做者:隋胖胖LoveFat
連接:http://www.jianshu.com/p/54dd21c50f21
來源:簡書
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。