HTTPS采用高安全性的TLS加密,可為什么Fiddler抓到HTTPS的包能解密?
Fiddler是干嘛的?
用于將加密的https報文解密,將明文的http報文字段呈現(xiàn)出來,方便調(diào)試排錯http。
為何不用Wireshark呢?
Wireshark不方便,但是不方便并不代表wireshark不能將加密的https報文解密出來!
Wireshark如何解密https報文呢?
瀏覽器可以將一個https session的加密/解密key提?。╡xport)出來,將其輸入(import)到Wireshark,然后就可以解密https session了。
瀏覽器(https client)與https server整個通信過程,wireshark全程沒有參與,只是被動地監(jiān)聽錄像,等人家兩口子完事后,導(dǎo)演(調(diào)試https程序員)想看回放。于是import key給Wireshark,于是Wireshark將錄像解密了出來,導(dǎo)演看看哪個細(xì)節(jié)出問題了。
Passive Mode
通常稱Wireshark這種被動錄像的工作模式為passive mode。這種模式不是非常方便,因為導(dǎo)演每看一次錄像回放,都需要手動export/import一次key,非常麻煩。導(dǎo)演尋思著,有沒有更便捷的回看錄像的工具,每次可以直接看加密的錄像?
有的,這個工具就是Fiddler。與Wireshark工作模式相反,F(xiàn)iddler的錄像功能是active mode,即主動參與模式,什么意思呢?
Active Mode
Fiddler需要全程參與整個https通信過程,F(xiàn)iddler需要假冒服務(wù)器的身份來欺騙客戶端。
怎么來欺騙客戶端?
導(dǎo)演將Fiddler安裝在客戶端的機(jī)器上,隨同軟件一起安裝的還有Fiddler的自簽名證書。意味著這臺機(jī)器充分信任這個自簽名證書、以及使用這個證書私鑰簽名的任何證書。換句話說,如果給任何https服務(wù)器證書簽名,這臺機(jī)器及瀏覽器會信任吧?
會的!
信任邏輯一旦達(dá)成,接下來的細(xì)節(jié)其實不是很重要了。
Alice試圖https聯(lián)系Bob。
Alice:親愛的Bob,是你嗎?
Fiddler:是我,我是Bob(將自己簽名的證書掏出來給Alice看)
Alice信了,于是與Fiddler協(xié)商了加密/解密key。
Fiddler 作為客戶端,與Bob服務(wù)器正常https流程,雙方也達(dá)成了另一組加密/解密key。
由于Fiddler兩組Key都知道,所以可以毫無壓力實時解密https流量。
導(dǎo)演可以一直色咪咪盯著攝像機(jī),實時查看Alice與Bob的交互細(xì)節(jié)。
如果導(dǎo)演只是安裝Fiddler軟件,而沒有信任Fiddler自簽名證書,打死Fiddler它也解不開AES GCM加密的https流量!
所以并不是說https加密算法不行,而是為了方便調(diào)試加密的https,而設(shè)計的一款軟件,利用了https認(rèn)證環(huán)節(jié)的特點。
為何Fiddler解不開一些手機(jī)APP的https流量?
設(shè)計APP的導(dǎo)演們,深深滴知道https認(rèn)證環(huán)節(jié)易于被利用,類似Fiddler中間人工具,那么加密的流量自然會被實時解密。為了避免被中間人欺騙,一些APP只信任幾個特定的權(quán)威CA簽名的證書,其它的證書統(tǒng)統(tǒng)無效,中間人欺騙的把戲就玩不下去了!