目录
- 前言
- 步骤
-
- 1、charles证书导出
- 2、本机安装openssl
- 3、修改模拟器中WLAN代理设置
- 4、计算hash并重命名文件
- 4、本机连接雷电模拟器
-
- 4.1、版本9
-
- 4.1.1、打开雷电模拟器的`root`权限和`ADB`调试
- [4.1.2 传输证书文件](#4.1.2 传输证书文件)
- [4.1.3 移动证书](#4.1.3 移动证书)
- 4.1.4、重启模拟器,在系统证书中就可以找到了
- 4.1.5、测试是否生效
- 4.2、版本14
- 常见问题
-
- [1、mount命令提示not in /proc/mounts](#1、mount命令提示not in /proc/mounts)
- 2、模拟器14上传文件所在路径
- 3、模拟器9上传文件
- 参考文章
前言
在雷电模拟器中直接安装charles证书是存放在用户证书中,像模拟器中自带的浏览器这些软件只信任系统证书,因此当进入浏览器中访问网站时会提示证书有问题,接口会无法请求成功,需要通过命令修改方式将证书移动到系统证书下
雷电模拟器目前是版本9和14,这里分不同版本进行演示
步骤
1、charles证书导出

由于等一下需要对证书进行hash计算,这里我们导出格式为pem,不导出cer格式

2、本机安装openssl
这里我们使用git自带的openssl功能,没有安装git的可以参考其他博主的这篇文章:Git 详细安装教程(详解 Git 安装过程的每一个步骤)
3、修改模拟器中WLAN代理设置
先查看本机ip,在命令行中输入ipconfig

查看charles端口


进入雷电模拟器找到网络设置,修改为手动并添加ip和端口

4、计算hash并重命名文件
进入git的bash命令行
bash
openssl x509 -subject_hash_old -in charles_ces.pem

找到第一行cf9466aa后将charles_ces.pem重命名为cf9466aa.0
4、本机连接雷电模拟器
4.1、版本9
4.1.1、打开雷电模拟器的root权限和ADB调试

修改磁盘读写

4.1.2 传输证书文件
检查一下当前的adb设备

如果这里列表是空的,输入命令
adb connect 127.0.0.1:5554连接即可这个时候列表会显示
127.0.0.1:5555 device
手动将文件传到mnt\shared\Pictures中,这里我试过命令上传但是没生效,就直接拖拽进去了

4.1.3 移动证书
bash
adb shell
su
cp /sdcard/Pictures/cf9466aa.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/cf9466aa.0

4.1.4、重启模拟器,在系统证书中就可以找到了
路径:设置->安全性和位置信息->加密与凭证->信任的凭证->系统

4.1.5、测试是否生效

4.2、版本14
4.2.1、移动证书
bash
adb shell
CERT_NAME='cf9466aa.0'
mkdir -p -m 700 /data/local/tmp/tmp-ca-copy
cp /apex/com.android.conscrypt/cacerts/* /data/local/tmp/tmp-ca-copy/
mount -t tmpfs tmpfs /system/etc/security/cacerts
mv /data/local/tmp/tmp-ca-copy/* /system/etc/security/cacerts/
cp /storage/emulated/0/Pictures/$CERT_NAME /system/etc/security/cacerts/
chown root:root /system/etc/security/cacerts/*
chmod 644 /system/etc/security/cacerts/*
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*
mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
命令
cp /storage/emulated/0/Pictures/$CERT_NAME /system/etc/security/cacerts/这里需要注意你把文件放在哪里了就写哪个前缀地址,比如我这里是/storage/emulated/0/Pictures,如果你是直接拖拽进入模拟器桌面的,默认就是这个路径,在文件管理器中打开图片就可以看到
4.2.2、检查系统证书

4.2.3、测试

雷电模拟器14在测试过程中出现Charles没有抓取到接口的情况,重启雷电模拟器又按命令走了几次就可以了,感觉应该是模拟器本身的问题,有遇到过的可以在评论区补充,推荐还是使用模拟器9,模拟器14整体改动有点大
常见问题
1、mount命令提示not in /proc/mounts

检查是否开启磁盘写功能

2、模拟器14上传文件所在路径


3、模拟器9上传文件
由于模拟器9没有和14一样的简易界面,可以选择直接打开文件夹后上传到文件夹里面


