1. 程式人生 > >【iTestCat】Charles的https抓包方法(抓包工具Charles使用教程)

【iTestCat】Charles的https抓包方法(抓包工具Charles使用教程)

1CharlesHttps抓包原理

HTTPS是對資料進行了加密處理的,如果不做任何應對是無法獲取其中內容。所以Charles做的就是對客戶端把自己偽裝成伺服器,對伺服器把自己偽裝成客戶端:

  • Charles攔截客戶端的請求,偽裝成客戶端向伺服器進行請求
  • 伺服器向“客戶端”(實際上是Charles)返回伺服器的CA證書
  • Charles攔截伺服器的響應,獲取伺服器證書公鑰,然後自己製作一張證書,將伺服器證書替換後傳送給客戶端。(這一步,Charles拿到了伺服器證書的公鑰)
  • 客戶端接收到“伺服器”(實際上是Charles)的證書後,生成一個對稱金鑰,用Charles的公鑰加密,傳送給“伺服器”(Charles)
  • Charles攔截客戶端的響應,用自己的私鑰解密對稱金鑰,然後用伺服器證書公鑰加密,傳送給伺服器。(這一步,Charles拿到了對稱金鑰)
  • 伺服器用自己的私鑰解密對稱金鑰,向“客戶端”(Charles)傳送響應
  • Charles攔截伺服器的響應,替換成自己的證書後傳送給客戶端

當然,如果使用者不選擇信任安裝Charles的CA證書,Charles也無法獲取請求內容。還有一種,如果客戶端內建了本身的CA證書,這時如果Charles把自己的證書傳送給客戶端,客戶端會發現與程式內的證書不一致,不予通過,此時Charles也是無法獲取資訊的。

2、Windows/Mac安裝Charles證書

1)安裝證書

選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,如下圖:

安裝證書:

直接點選下一步:

直到提示匯入成功,如下圖:

2)配置SSL的抓取域名:

選擇“proxy” ->“SSL Proxying Settings”,如下圖:

點選後開啟SSL Proxying Settings介面,如下圖:

你可以單獨配置,也可以設定為所有的HTTPS協議全部允許捕獲,如下圖:

3、手機安裝證書

選擇“Help”->”Install Charles Root Certificate on a Mobile Device or remote Browser” (在移動裝置或遠端瀏覽器上安裝SSL證書)

可以檢視到提示你需要設定代理並瀏覽器訪問地址“chls.pro/ssl”,如下圖:

在手機端瀏覽器輸入網址“chls.pro/ssl”,如圖:

下載證書並信任,如下圖:

注:在iOS 10.3之前,當你將安裝一個自定義證書,iOS會預設信任,不需要進一步的設定。而iOS 10.3之後,安裝新的自定義證書預設是不受信任的。如果要信任已安裝的自定義證書,需要手動開啟開關以信任證書。

iOS11下需要手動信任已下載好的證書,方法如下:

設定->通用->關於本機->證書信任設定-> 找到charles proxy custom root certificate然後信任該證書即可。