安卓7以上系统安装Charles证书到系统区
👉 本文以红米手机(Android 10)为例,其他安卓手机流程基本一致。
工欲善其事,必先利其器:
- 电脑(win、mac、linux均可)
- 一个已经获取root权限的手机
- adb
- 手和脑子
一、安装adb
我们先去 官网 下载对应你电脑版本的 Android SDK Platform-Tools 此时你会得到一个zip包,解压等待操作。
win:windows环境下直接解压zip包,然后在环境变量Path中添加该路径(例如C:\platform-tools)。
mac和linux:mac和linux环境下直接解压zip包,然后直接
export PATH=${PATH}:/Users/ebert/Documents/platform-tools
即可。
无论哪个环境哪种方式安装,只要搞完之后执行adb命令会出现帮助信息即为成功。
二、开搞
1. 证书导出
启动Charles(其他抓包软件操作类似),依次点击 Help -> SSL Proxying -> Save Charles Root Certificate… 将证书导出(windows下有个小bug,导出的证书名字会是你选择的目录名,并且位置是和你所选的文件夹同级)
2. 证书转换
导出的这个 charles-ssl-proxying-certificate.pem
证书不能直接使用,而是需要先计算出这个证书主题(subject)的MD5值。
openssl x509 -subject_hash_old -in charles-ssl-proxying-certificate.pem|head -n 1 |
3. 证书重命名
然后将导出的证书重命名为 md5值 + .0
的格式
mv charles-ssl-proxying-certificate.pem de70e315.0 |
当然了,重命名也可以直接在GUI上进行,例如windows系统直接右键点击文件然后选择重命名即可。
4. 将证书导入手机系统证书区
- 先使用你习惯的方式将文件传入手机中,这里我是用
adb push
。(你甚至可以用QQ,微信等任何方式将文件传入手机中)
adb push de70e315.0 /sdcard |
👉 我这里保存到了 /sdcard
目录,现在的安卓手机自带储存的目录名一般为 sdcard
所以我这个可以理解为当前”手机文件管理“的根目录下。
- 然后将证书移动到
/system/etc/security/cacerts
目录下,不过默认这个目录是只读目录,所以“暴力一点”重新挂载一下根分区即可。
adb shell # 进入手机shell |
⚠️ 你在移动证书到 /system/etc/security/cacerts
时可能会提示空间不足,这时你需要删除一个无用的系统内置app即可,我这里删除的是“电商助手” rm -rf /system/app/mab
。