作为测试,抓包定位前后端问题这是必须要做的,但是很多小伙伴,在app验证证书的时候,或者正式包的时候,就抓不了了。或者说在安卓高版本的时候就抓不了包了。
其原因是在安卓7以后,我们从fiddler下载的证书,作为用户证书安装在手机,手机认为这不是安全的,所以不给抓包。
解决办法就是,把这个证书,安装为手机的系统证书。大致实现就是,把证书下载下来,然后转变成手机适用的格式文件,然后丢到手机里面去,然后手机就会识别为系统证书
注意:前提是手机需要有root权限,亲测夜神模拟器可以。
下面是操作步骤:
1、打开fiddler,保存证书到电脑。
2、将证书转为手机可用的格式的证书。
此时需要借助一个工具OpenSSL,官方说明及链接
win电脑的话直接点工具下载链接:http://slproweb.com/download/Win64OpenSSL_Light-3_0_5.exe
然后无脑安装,安装完之后,需要配置一下这个工具的环境变量
配置完后,cmd中输入openssl测试一下是否安装好了。
好,装好之后,下面就是转换这个文件,命令如下,文件路径具体需要自己改一下
openssl x509 -inform DER -in C:\Users\Administrator\Desktop\FiddlerRoot.cer -out C:\Users\Administrator\Desktop\FiddlerRoot.pem
回车运行完之后,桌面就会出现pem格式的文件
得到文件之后,还需要知道文件的hash名称,继续输入命令如下,记得改成自己的文件路径,注意,此次是pem文件
openssl x509 -inform PEM -subject_hash_old -in C:\Users\Administrator\Desktop\FiddlerRoot.pem
回车上面的命令,得到hash值
最后用上面的hash值重命名这个pem文件。文件后缀为.0 记得电脑要开展示了后缀才能改后缀。
3、经过上面一系列操作,得到的想要的证书,然后就是把证书导入到手机上就能愉快的抓包。
由于我也没有root的安卓真机,我就用夜神演示吧。
先打开开发者模式,然后打开USB调试
打开USB调试之后,然后cmd中输入adb devices 看看能不能找到这个设备
(我的adb版本和模拟器的好像不一致,所以我的找不到,所以我cd到夜神模拟器自带的adb中去敲命令,但还是没有,然后我又重启了一下模拟器,然后就有了。)
连接上这个设备之后,下面开始导入文件,
怕遇到系统只读问题,所以先挂在一下系统
adb shell mount -o remount,rw /system
挂在之后,然后就是导入文件进去,前面根据自己文件位置,后面路径为固定路径
adb push C:\Users\Administrator\Desktop\e5c3944b.0 /system/etc/security/cacerts/
导入之后,还需要赋予一下权限,才能真正使用。文件名改成自己的。
adb shell chmod 777 /system/etc/security/cacerts/e5c3944b.0
上面操作都完成之后,重启手机。打开fiddler,手机设置代理,不用再去安装证书,就已经能够抓包了。
上述操作如有遇到问题的,欢迎留言或私聊我。