使用Charles進行https抓包

背景

隨著apple對https協議的強推(貌似2017年開始ios應用上架就得全部用https協議了),作為iOS開發來說,會越來越多的接觸到這個協議,并不可避免的需要抓包來進行問題的定位解決。好在我們常用的Charles也支持https協議抓包,這就極大方便了我們。

原理

Charles能進行https協議抓包分析,是使用了中間人代理的方法(man-in-the-middle,也常作為一個黑客攻擊手段)。Charles代替你的app接受server的證書,然后使用這個證書通過SSL和server通信;同時,Charles會動態的生成一個對應的證書(用Charles的CA證書簽名),然后使用這個證書和你的app通信,這樣就完成了一個中間人代理,從而可以把app和server的https包給抓到和解碼出來。

使用

  1. 首先要安裝Charles的證書,用iOS設備的safari打開http://www.charlesproxy.com/getssl,會彈出一個提示框讓你安裝證書,確認安裝即可(只適用于真機,不適用于模擬器)
  2. 打開菜單Proxy -> SSL Proxying Settings...,在彈出的設置框中,勾選Enable SSL Proxying,同時添加需要代理的域名(這里偷懶,直接設置成了*來代理全部https域名)


    SSL Proxying設置
  3. 開始愉快的抓包分析吧


    ?百度首頁抓包

注意事項

  • 沒有安裝Charles的證書,卻開啟了Enable SSL Proxying,那么會造成所有的https訪問都會失敗,同時Charles會在每個https請求的overview那里友好的提示你需要信任Charles的根證書,即是我們上述的步驟1,以訪問https://www.baidu.com為例
    ?沒有安裝Charles根證書
  • 如果不開啟Enable SSL Proxying,那么Charles只是簡單把所有SSL通信轉發給server而不做任何處理,此時我們抓包會看到這個https請求,但是看不到請求的內容;另外這個請求會以CONNECT而非GET的形式出現,同時請求耗時還會異常的長(甚至有的請求會一直不結束),實際上這個請求早就返回了,知道這點就好,以免發生疑惑(Charles在每個請求的overview里還會有溫馨提示)


    ?正常的https請求
  • 系統設置的通用->描述文件這里可以看到我們安裝并信任的Charles的根證書,如果不需要了可以自行刪除
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容