
解决方案:把Charles证书安装成系统证书。
首先安卓需要开启root,对于逍遥模拟器,root在:

其次电脑上还要安装adb工具、安装openssl
adb全称 Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互,类似于我们使用xshell工具与Linux服务器进行连接。
参考文章
这两篇文章都有小错误,不然我也不至于单独写下这篇整合完善版了...
安装Adb工具
由于我这里使用的是模拟器,通常模拟器安装后自带adb连接工具,就没必要单独安装了。如下图是我的逍遥模拟器安装目录,我在此找到了adb.exe

但如果你使用的是手机,那你仍然需要给电脑安装adb.exe,下面是一个简单的安装步骤:
-
首先
-
解压得到如下文件,有一个adb.exe

安装Openssl
(我用下面的教程安装的openssl,感觉有问题,版本也老:

,放弃了。但是我的anaconda3有不报错的openssl,我用的anaconda3的openssl:
)
下载:

下载第一个用户版本即可,这是一个exe文件,所以下载后直接双击下一步安装,过程省略…
正常安装完毕后,我们打开cmd命令行工具,输入:openssl version,如果有出现版本号,说明安装没问题,如果没有出现或者提示不是有效的命令时,可能是环境变量没有配置,下面是安装后正常的命令显示:

到此openssl就已经安装完成。
下载Charles的证书到电脑上
此过程省略,各抓包工具的证书下载教程,见我的笔记的《技术栈 - CTF - 小迪安全2022 - 第3天》的小标题“安装抓包软件的证书”,或者百度下。

用Openssl计算证书的Hash值
打开anaconda3终端,切换到刚才保存证书的目录,准备计算刚刚保存的证书文件的hash值:
# .cer格式证书 openssl x509 -inform DER -subject_hash_old -in 证书名如charles-ssl-proxying-certificate.cer # .pem格式证书 openssl x509 -inform PEM -subject_hash_old -in 证书名如charles-ssl-proxying-certificate.pem
计算完成会在终端显示出如下内容:

885fd512.0就是此证书在安卓手机的证书名字。
生成安卓手机预设格式证书文件:
# .cer格式证书 openssl x509 -inform DER -text -in 证书名如charles-ssl-proxying-certificate.cer > 885fd512.0 # .pem格式证书 openssl x509 -inform PEM -text -in 证书名如charles-ssl-proxying-certificate.pem > 885fd512.0
此时当前文件夹下多出个885fd512.0文件:

打开该文件, 将终端的 -----BEGIN CERTIFICATE----- * * -----END CERTIFICATE----- 一整段话复制到整个文件的开头位置

使用工具移植证书到安卓系统证书列表
在adb.exe所在目录打开终端,准备用adb工具将电脑上的证书文件 885fd512.0安装到安卓手机的 /system/etc/security/cacerts目录里(此目录就是安卓手机系统证书的目录),具体步骤如下:
先用adb devices查看当前连接的所有设备,看看电脑是否连接了模拟器上的安卓:

1.adb push 885fd512.0 /sdcard
2.adb shell
-
su -
mount -o rw,remount /system这一步在雷电模拟器失败了,一直报错/system不在mount挂载区或者根目录/是read_only,解决:

然后改把根目录挂载为可读写
mount -o rw,remount /,然后chmod 777 /system -
cp /sdcard/885fd512.0 /system/etc/security/cacerts/ -
chmod 644 /system/etc/security/cacerts/885fd512.0
重启手机并进行查看
reboot
然后去安卓手机系统证书的目录查看(adb的shell命令有点仿linux)

发现885fd512.0已经加入到系统证书目录中!
实战验证 - 抓APP数据包
模拟器里打开抖音火山版

安装证书很成功!
模拟器里的浏览器有单独的CA信任列表
共有 0 条评论