安卓7.0以后,安卓不信任用戶安裝的證書,所以抓https時無法解碼請求,對於第三方應用,需要將證書添加為系統證書,網上解決方法較多,比如使用安卓模擬器(兼容性差,很多應用閃退),使用xposed框架等,這里使用安卓手機添加證書。
注:需要手機有root權限,以下操作以小米9 SE為准,其他品牌手機操作可能有差別。
1. 導出證書(以Charles為例)
help --> SSL Proxying --> Save Charles Root Certificate...
2. 安卓證書儲存格式

證書路徑:
/system/etc/security/cacerts
文件命名格式(如果計算出來的hash值已經存在則編號依次+1):
<證書Hash值>.編號
3. 將導出的證書計算hash值
需要安裝openssl: win10下安裝
//以下根據導出的證書格式2選1
//.cer格式證書
openssl x509 -inform DER -subject_hash_old -in 證書文件.cer
//.pem格式證書
openssl x509 -inform PEM -subject_hash_old -in 證書文件.pem
計算結果:

4. 生成系統系統預設格式證書文件
//cer格式
openssl x509 -inform DER -text -in xxx.cer > 0dd2455e.0
//pem格式
openssl x509 -inform PEM -text -in xxx.pem > 0dd2455e.0
最后編輯一下輸出的文件,把 -----BEGIN CERTIFICATE----- 到最后的這部分移動到開頭。結果如下

5. 上傳證書
上傳證書文件0dd2455e.0到手機/system/etc/security/cacerts路徑下。
方法1: 使用adb連接
執行:
1. adb push 0dd2455e.0 /sdcard
2. adb shell
3. su
4. mount -o remount,rw /system
#mount -o rw,remount /system
5. cp /sdcard/0dd2455e.0 /system/etc/security/cacerts/
6. chmod 644 /system/etc/security/cacerts/0dd2455e.0
方法2: 使用第三方文件管理器(推薦)
- 下載酷安市場app --> 分別搜索 Syslock 和 RE管理器 並下載安裝(其他應用市場下載也可以)
- 給 Syslock 和 RE管理器 root權限(以小米為例:安全中心-->應用管理-->權限-->ROOT權限管理-->找到應用並開啟)
- 打開Syslock並解鎖 /system (每次重啟后都得開啟一次)
- 將文件拷貝至手機中
- 使用RE管理器將文件拷貝到 /system/etc/security/cacerts 下
- 修改文件權限
到此然后重啟手機。就可以正常抓https數據包了。
也可以到手機 設置->安全->信任憑據-->系統 查看。
