原因
最近需要对软件进行抓包,但是 HttpCanary 的证书无法正常安装。按照教程点击安装,但是却弹出”未安装该证书“。这是官方的说法:
部分用户在使用MuMu模拟器X版本的过程中需要进行抓包一类的操作,但发现无法安装导入证书,无法正常抓包,这是因Android7.0之后新版本系统的安全限制导致(Android7.0 之后默认不信任用户添加到系统的CA证书)
官方给出了使用 adb 安装的方法,网络上也有一些相关博文,然而都是使用其他抓包工具,没有使用 HttpCanary 的,所以自己记录一下。
我的 MuMu 模拟器 12 的版本是 V3.6.11(2438)。
由于我过程中没有截图,所以这里只简单用文字描述一下过程,如果有疑惑的话可以查看参考文献中的相同步骤的截图。
安装流程
原理
用 adb 直接把证书移到系统证书位置 /etc/security/cacerts/
里。
模拟器设置
打开 MuMu 模拟器设置界面。
-
在“磁盘”中将“磁盘共享”改为“可写系统盘”。
-
在“其他”中将“开启手机Root权限”选中。
当然,在完成安装流程后这些都是可以改回去的。
导出证书
在 HttpCanary 设置界面中,进入"SSL 证书设置",点击“导出HttpCanary根证书”,选择“System Trusted(.0)”格式,导出证书默认就在 /HttpCanary/cert/
下,我的文件名是 87bc3517.0
。
参考文献里其他的抓包工具只能导出 .pem 格式,需要用 OpenSSL 重新签发为 .0 格式,而 HttpCanary 直接为我们提供了 .0 格式的导出,很方便,减少了很多步骤。
adb 安装证书
如果不了解或者没有 adb,可以先在其他博客中自行学习一下。
首先连接到 MuMu 模拟器并申请权限:
adb connect 127.0.0.1:7555
adb root
adb shell
其中第二步运行后,模拟器会有一个弹窗,显示“Shell 正在请求超级用户访问权限“,选择“仅此次”,点击允许。
第三步运行后,提示符会发生变化,这时候就进入 Android 的 shell 了。
将证书文件放入系统位置:
mv /sdcard/HttpCanary/cert/87bc3517.0 /etc/security/cacerts/
可以检查一下是否成功移动文件:
cd /etc/security/cacerts/
ls 87bc3517.0
确认后证书就安装完毕了,可以输入 exit
按下回车退出 shell。
安装完成
这时候启动 HttpCanary 开始抓包,软件可能仍然会显示提示条,不要紧,打开软件试试,如果能抓到 Https 请求就代表证书安装成功了,可以正常抓包了。
当然,有些软件会有 root 检查,启动会闪退,你可以把 MuMu 模拟器设置修改回去,没有影响。
然而有些软件同时还有证书验证,可能开始抓包后会无法联网(没错,说的就是你,森空岛。),难绷。
后续
写完上面一大堆之后,不知道在写博客的时候是哪里捣鼓坏了,我的抓包又变成之前那样没法抓了,但是当时刚搞完确实是可以抓的。
后面又按照 这篇博客 整了一下,效果也只持续了一下,重启模拟器之后就也不能抓了,不知道是什么鬼。
附录
参考文献
版权信息
本文原载于reincarnatey.net,遵循CC BY-NC-SA 4.0协议,复制请保留原文出处。