将证书文件在android系统里直接安装会被分类为用户证书。
应用在android 7.0+系统的设备中之所以没法被抓包,是因为android 7.0之后的应用是默认只信任系统证书,不信任用户证书,那么我们可以想办法将Fiddler证书装到系统证书目录下,伪装成系统证书,那么就不存在因为fiddler证书不被信任而无法抓包的问题了。 为什么不直接使用手机抓包,因为现在的手机不方便root,而模拟器一般都提供root权限,所以选择在模拟器上抓包。 所以整个过程分为一下步骤:
1、重新导出Fiddler证书
因为新版本的Android拒绝超过两年有效期的证书,双击下载好的fiddlercertmaker.exe(确保已关闭Fiddler),会弹出提示导入证书成功这个对话框。(如果你的新版本可以安装,这一步可以省略)将Fiddler的证书导出到电脑,点击Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop。
2、 下载和安装openssl,转化cer格式变成PEM
这一步是因为android系统安装证书需要pem格式的证书,需要将cer证书转成pem证书
windowns下安装openssl: Win32OpenSSL
将Fiddler cer证书转pem证书,在cmd输入如下命令进行转换:
openssl x509 -inform DER -in C:\Users\DELL\Desktop\FiddlerRoot.cer -out C:\Users\DELL\Desktop\FiddlerRoot.pem
用md5方式显示pem证书的hash值, 在cmd输入如下命令:
openssl x509 -inform PEM -subject_hash_old -in C:\Users\DELL\Desktop\FiddlerRoot.pem
然后重命名pem证书:
格式为md5值.0
,例如我的为 e5c3944b.0
3、 将证书安装到模拟器
实际上是将md5命名的pem证书保存到模拟器/system/etc/security/cacerts
目录就OK
了。
首先要确保模拟器是可root的,不然不能修改/system/etc/security/cacerts
目录。
雷电模拟器如何root:
直接在设置打开磁盘写入功能
其他的夜神模拟器可以,不过夜神模拟器安装小翼管家会卡死。
用到的命令为:
adb push C:\e5c3944b.0 /system/etc/security/cacerts
实际上可能遇到adb连接问题、/system/etc/security/cacerts
目录写权限问题。
a、adb连接:
adb connect 127.0.0.1:62001
adb device
b、adb shell,进入到模拟器的终端shell中更改 /system/etc/security/cacerts
目录写权限
输入:chmod 777 /system/etc/security/cacerts
一般会提示:Read-only file system
,尝试mount -o remount,rw /system
重新挂载一下系统,
然后再输入chmod 777 /system/etc/security/cacerts
,你会发现可以成功设置了。
如果还不行,退出adb shell 执行:
先root:adb root
、重新挂载:adb remount
,接着重新在adb shell里输入chmod 777 /system/etc/security/cacerts
参考链接:
《吐血整理》高级系列教程-吃透Fiddler抓包教程(27)-Fiddler如何抓取Android7.0以上的Https包-中篇 - 北京-宏哥 - 博客园
关于fiddler抓包的问题(证书问题)_fiddlercertmaker.exe-CSDN博客
【Fiddler】安卓7.0以上添加Fiddler/Charles证书到系统根证书(模拟器-雷电)_雷电模拟器安装证书-CSDN博客