源自公眾號文章: 徹底解決Charles手機抓包的證書問題
簡介: Charles 抓包是日常開發當中經常會用到的技術, 在 Android 6 之前, 手機系統既信任系統內置的證書, 也信任用戶自己安裝的證書, 但是在 Android 7 之后, 卻發生了變化, 手機系統只信任系統內置的根證書. 當然了, 這是為了手機系統更安全. 但是這樣以來, 原來抓包的方法就失效了. 本文主要全面講解 IOS 和 Android 系統如何去配置根證書. 徹底解決抓包所遇到的最頭疼的問題.
Charles 抓包前的準備工作
- 下載
charles
, 官網的地址: https://www.charlesproxy.com - 配置要抓包的主機和端口,
Proxy > SSL Proxying Settings > SSL Proxying
, 啟用Enable SSL Proxying
, 同時在Include
當中添加 Location, 如下圖所示(這是個通配符配置, 一般狀況下, 這個這個已經能夠滿足絕大數抓包的需求了).

- 配置代理服務器的端口,
Proxy > Proxying Settings
, 設置端口(我喜歡使用8888, 當然了, 各位自己按照喜好設置):

一般情況下, 上述配置已經滿足了大部分抓包的需求, 當然還需要更詳細的內容, 請參考其他教程內容.
Charles 在 Android 7.0(及其以上的版本) 上安裝證書方法
- 下載應用
VMOS
, 官網地址是: http://www.vmos.cn.
注:VMOS
應用就是一臺 Android 虛擬機, 目前好像只支持 32 位系統, 大部分應用都可以使用, 如果有的應用明確需要 64位系統, 可以使用VMOS Pro
, 當然了這個 root 功能是收費的了.
2. 導出 Charles 的證書, 這個證書是抓包的時候安裝在手機上的證書. 方法有兩種:
方法一:
- 在 Android 手機上配置代理, 主機是你安裝 Charles 的主機的 IP (注意: Android 手機需要和安裝的Charles的電腦在同一網段下), 端口號是 8888. (這個可以自行百度各種手機的配置方法.)
- 在 Android 手機的瀏覽器上輸入網址
chls.pro/ssl
, 然后下載文件. - 將下載好的文件拷貝到電腦上, 進行如下的操作:
openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.crt
charles-proxy-ssl-proxying-certificate.crt 是拷貝的證書文件
上面輸出的結果類似于:
faf57fe3
-----BEGIN CERTIFICATE-----
MIIFMDCCBBigAwIBAgIGAXWqowQPMA0GCSqGSIb3DQEBCwUAMIGbMSwwKgYDVQQD
....
aXDrm30UE6+dWdQ3n0ePVLNcHV+ZrIqwka94M/t8HavZpm4y
-----END CERTIFICATE-----
然后將 charles-proxy-ssl-proxying-certificate.crt 文件重命名
為 faf57fe3.0
(faf57fe3
需要根據你自己生成 的結果進行調整)
方法二:
- Charles 進入
Help > SSL Proxying > Save Charles Root Certificate
, 導出 pem 格式證書. - 然后進行如下的操作:
openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem
charles-proxy-ssl-proxying-certificate.pem 是導出的證書文件
上面輸出的結果類似于:
faf57fe3
-----BEGIN CERTIFICATE-----
MIIFMDCCBBigAwIBAgIGAXWqowQPMA0GCSqGSIb3DQEBCwUAMIGbMSwwKgYDVQQD
....
aXDrm30UE6+dWdQ3n0ePVLNcHV+ZrIqwka94M/t8HavZpm4y
-----END CERTIFICATE-----
然后將 charles-proxy-ssl-proxying-certificate.pem 文件重命名
為 faf57fe3.0
(faf57fe3
需要根據你自己生成 的結果進行調整)
3. 拷貝文件, 將生成好的證書文件拷貝到 /system/etc/security/cacerts/
目錄下, 并且修改文件權限:
# adb 連接到 vmos 虛擬機
adb connect 192.168.50.100:5666# 拷貝文件
adb push faf57fe3.0 /system/etc/security/cacerts/# 修改文件權限
adb shell
cd /system/etc/security/cacerts/
chmod 644 faf57fe3.0
192.168.50.100:5666
是VMOS
虛擬機的 adb 連接. 在進入VMOS
app后, 進入設置 > 其他設置
當中, 按照下圖所示進行設置, 然后重啟VMOS
app 即可生效:

4. 設置全局代理. 到此為止, 你已經成功了一半, 接下來就需要設置 VMOS 的全局代理地址為當前的 Charles 的代理服務器的地址. 設置操作如下:
adb connect 192.168.50.182:5666 # adb 連接到 vmos 虛擬機(如果之前已經連接過可以省略)adb shell settings put global http_proxy 192.168.50.14:8888 # 設置 vmos 的全局代理
192.168.50.14:8888
是我的 Charles 的主機IP地址, 這個需要根據自己的情況修改. 這一步很重要的, 如果沒有這一步操作, 前面的準備工作都白搭了!
5. 到處為止, 大家就可以愉快的抓包了. 要么去 VMOS 的應用商店下載應用, 要么自己把應用傳遞到 VMOS 當中. 這個大家自己去探索吧, 是非常簡單的操作.
charles 在 iphone 上安裝證書方法
- Charles 當中點擊
Help > SSL Proxying > Install Charles Root Certificate on a Mobile Device or Remote Browser

- 點擊
iPhone
手機的 Safari 或者 Safari瀏覽器, 輸入網址http://chls.pro/ssl
, 點擊下載 charles 的證書. - 進入
iPhone
手機的 Settings > General > Profile(s) 或者 設置 > 通用 > 描述文件:

- 點擊 Install 或者 安裝, 安裝
chls
證書.

- 進入
iPhone
手機的 Settings > General > About > Certificate Trust Settings 或者 設置 > 通用 > 關于本機 > 證書信任設置, 啟用已經安裝好的Charles Proxy CA
證書.

各位看官, 本篇文章怎么樣? 如果喜歡了, 就請點個贊吧, 關注一下, 再次感謝您的觀看 !