现在大部分的网站都使用了https作为网络请求的协议。而我们开发人员在调查app发生错误原因时往往需要查看网络请求的内容。这时由于安卓系统的原因我们安装到安卓系统上的证书往往是用户级别的证书,导致我们抓包时看不到请求内容。这时如果我们的证书是系统级别的就可以极大的降低我们排查问题的难度。
效果
- 证书在系统信任的凭据中。

- 代理抓包。
这是我们自己公司开发的一款内部通讯软件。请求协议都是使用的https。此时已经可以通过抓包工具看到请求内容。

此时手机浏览器还是显示此网站安全。

接下来说如何实现
- 安装面具及面具的magic_overlayfs模块
- 保存Charles证书到手机
- 安装证书
- 通过adb shell 将证书移动到系统信任凭据下。
安装面具及面具的magic_overlayfs模块
获取手机最高权限(小米5)
Android /system文件改为可读写
保存Charles证书到手机

推送证书到手机
adb push Charles.pem /sdcard

安装证书
本次以miui13.0.9系统举例
打开设置->安全->更多安全设置->加密与凭据->【安装证书】->【CA 证书】->【仍然安装】
在打开的新页面中选择我们刚刚上传的Charles.pem。系统弹出为此证书命名。随便输入一个,点击确定。

目录介绍
目录介绍: [/data/misc/user/0/cacerts-added/]
此目录是下可以看到我们刚刚安装的证书文件。正常情况下应该只有一个,如果有多个建议在【加密与凭据】页面清除凭据后,重新操作安装证书这一步。
adb shell
su
cd /data/misc/user/0/cacerts-added/
ls -al

目录介绍: [/system/etc/security/cacerts/]
此目录是系统信任的证书目录,默认情况下为只读。

移动证书
mv /data/misc/user/0/cacerts-added/* /system/etc/security/cacerts/

此时由于系统目录只读,移动文件会失败。
使用此命令将系统目录修改为可写, 如果此命令执行失败请参考【安装面具及面具的magic_overlayfs模块】
su -mm -c magic_remount_rw

此时再次执行移动证书命令
mv /data/misc/user/0/cacerts-added/* /system/etc/security/cacerts/

成功后将系统目录恢复成只读状态
su -mm -c magic_remount_ro
检查证书
如果在系统的信任凭据中出现了Charles的证书就说明操作成功了。此时使用Charles抓包时即可抓取https请求。
