注:手机需要root
1、安装证书
help-SSL Proxying-Install Charles Root Certificate
2、检查当前证书:如果是可信任的,无需重新安装;如果是不可信任的,需要重新安装,参照如下
3、点击“下一步”
4、点击“浏览”,选择“受信任的根证书颁发机构”,点击“下一步”至导入成功。
导入后,再次检查,证书应该为受信任状态,如下图
5、保存证书文件到本地电脑中,名字随便起,后缀为“.pem”
6、 把证书文件导入虚拟机,使用命令计算出哈希值,以哈希值重命名证书文件,后缀为“.0”
openssl x509 -subject_hash_old -in '/home/browser/Desktop/charles.pem'
红字为需要替换的证书文件
“99ba415f”为计算出来的哈希值
7、用之前得到的哈希值重命名上一步的.pem文件,并将后缀pem改为0,最后得到证书文件,例如“99ba415f.0”(这边pem文件不要直接替换,复制出来改,留一个后面步骤用)
8、将证书文件导入手机/sdcard/Download/下
adb push 证书 /sdcard/Download/
9、 将正如copy到/system/etc/security/cacerts/下,更改文件权限为644,并重启设备,命令如下:
cd /system/etc/security/cacerts/
cp /sdcard/Download/aa786bbf.0 https://blog.csdn.net/Instinctty/article/details/ (红色部分要用自己的)
如果第二步操作失败,请参照下节内容
10、问题一:如图
解决方法:
adb root
adb disable-verity
adb reboot
adb root
adb remount
adb shell
mount -o rw,remount /system
如果上图中命令执行失败,解决方案参照步骤11
11、问题二:如图
解决方法:
获取手机root和remount权限后,直接执行如下命令,更改为644权限,并重启设备
cp /sdcard/Download/99ba415f.0 https://blog.csdn.net/Instinctty/article/details/
12、手机中导入证书charles.pem到sdcard
设置-WLAN-高级设置-安装证书,选择“charles.pem”,输入“CA”,点击确定,提示“已安装CA”
13、验证结果:设置-安全-信任的凭证,滑到页面底部,可以看到如图证书
14、Proxy->Proxy Settings,设置端口,将Enable transp…前面的复选框勾上
15、 Proxy->SSL Proxying Settings,在Location下面点击Add增加
16、 关闭电脑防火墙(才会弹出允许连接的提示框),手机连接电脑ip代理,打开charles进行https抓包测试(暂不确定需不需要这一步,目前未关闭防火墙也能抓包)