抓取HTTPS請求包担汤,對數(shù)據(jù)進行排查檢驗
1.安裝Charles
2.電腦安裝Charles證書
3.手機安裝證書
4.手機網(wǎng)頁輸入網(wǎng)址 下載證書并信任
注意
:在iOS 10.3之前,當你將安裝一個自定義證書,iOS會默認信任,不需要進一步的設(shè)置力九。而iOS 10.3之后,安裝新的自定義證書默認是不受信任的。如果要信任已安裝的自定義證書,需要手動打開開關(guān)以信任證書粪糙。
iOS11下需要手動信任已下載好的證書,方法如下:
設(shè)置->通用->關(guān)于本機->證書信任設(shè)置-> 找到charles proxy custom root certificate然后信任該證書即可.
5.開始抓包
Charles設(shè)置Proxy
Proxy -> SSL Proxying Settings...虐沥,如下圖所示:
選擇Proxy | Recording Settings缘厢,彈出Recording Settings設(shè)置選項卡吃度,勾選include
6.原理簡析
如果是HTTP請求,因為數(shù)據(jù)本身并沒加密所以請求內(nèi)容和返回結(jié)果是直接展現(xiàn)出來的贴硫。
但HTTPS是對數(shù)據(jù)進行了加密處理的椿每,如果不做任何應(yīng)對是無法獲取其中內(nèi)容。所以Charles做的就是對客戶端把自己偽裝成服務(wù)器英遭,對服務(wù)器把自己偽裝成客戶端:
- Charles攔截客戶端的請求间护,偽裝成客戶端向服務(wù)器進行請求
- 服務(wù)器向“客戶端”(實際上是Charles)返回服務(wù)器的CA證書
- Charles攔截服務(wù)器的響應(yīng),獲取服務(wù)器證書公鑰挖诸,然后自己制作一張證書汁尺,將服務(wù)器證書替換后發(fā)送給客戶端。(這一步多律,Charles拿到了服務(wù)器證書的公鑰)
- 客戶端接收到“服務(wù)器”(實際上是Charles)的證書后痴突,生成一個對稱密鑰,用Charles的公鑰加密狼荞,發(fā)送給“服務(wù)器”(Charles)
- Charles攔截客戶端的響應(yīng)辽装,用自己的私鑰解密對稱密鑰,然后用服務(wù)器證書公鑰加密相味,發(fā)送給服務(wù)器拾积。(這一步,Charles拿到了對稱密鑰)
- 服務(wù)器用自己的私鑰解密對稱密鑰丰涉,向“客戶端”(Charles)發(fā)送響應(yīng)
- Charles攔截服務(wù)器的響應(yīng)拓巧,替換成自己的證書后發(fā)送給客戶端
當然,如果用戶不選擇信任安裝Charles的CA證書昔搂,Charles也無法獲取請求內(nèi)容玲销。還有一種,如果客戶端內(nèi)置了本身的CA證書摘符,這時如果Charles把自己的證書發(fā)送給客戶端贤斜,客戶端會發(fā)現(xiàn)與程序內(nèi)的證書不一致,不予通過逛裤,此時Charles也是無法獲取信息的瘩绒。
參考
mac環(huán)境下使用Charles抓包Https請求
淺談Charles抓包
Charles 抓包IOS中https亂碼解決
寫在最后
本文僅做個人學(xué)習記錄,不做他用带族,有則改之無則加勉锁荔!