大家都知道https是加密的通信,下邊簡述一下簡單流程
客戶端(打招呼)請求服務端(此時未建立https鏈接,通信都是明文的),服務端返回自己的服務器證書及相應支持的加密方式列表
客戶端檢查ca證書是否受信,是的話,繼續(xù),不是的話,瀏覽器會有提示
客戶端生成RSA公鑰+客戶端回話密鑰(并加密)給服務器,服務器解密出兩個密鑰。然后自己生成一個服務端會話密鑰(并加密)發(fā)送給客戶端。客戶端解密出來服務端會話密鑰。用人話說就是,服務端和客戶端交流了一下自己的公鑰,然后雙方各自生成了一個自己的通信密鑰并告知對方,交流完畢,就開始各自用各自的通信密鑰發(fā)送加密后的數(shù)據(jù),正常通信了。
fiddler 抓包的原理就是 在客戶端和服務端中間添加一個透明代理,這個代理當然也有自己的CA(受信)證書,對于服務端來說,fiddler就是一個客戶端,只要fiddler支持https協(xié)議即可;對于客戶端來說,fiddler就是一個服務端,我們真正的客戶端經(jīng)過fiddler的時候,客戶端需要鑒定fiddler的證書,這一步就是為什么客戶端設備(手機、pc、其他終端設備)需要手動安裝fiddler的證書。
聯(lián)想一下,把我們剛剛安裝的 “ fiddler證書 ” 替換成某某大公司的證書,恰巧這個大公司又運營了你訪問某(https)網(wǎng)站的必經(jīng)結(jié)點。那么你通過https訪問的數(shù)據(jù),就沒得秘密可言了。