背景
7.0之后Android默认不相信用户自己安装的证书,需要程序自己实现是否相信用户证书。在此背景下,fiddler无法抓包https加密的报文,这种情况下解决办法只有两个,一个是不用android7.0以上的设备。。通常模拟器都是6.0目前,所以还可以。还有一个方法就是安装系统的根证书。我们这里就采用的第二个方法。
条件
一台root的手机,这里使用的是nexus6p
方式
1.先从fiddler中下载需要的证书,即在本地8888端口下载即可。我这里下载到的证书名字为:fiddlerRoot.cer
2.得到证书的哈希值:
openssl x509 -inform DER -subject_hash_old -in fiddlerRoot.cer | head -1
得到类似字符串:e5c3944b
(网上看到,如果是crt格式证书,命令为:openssl x509 -inform PEM -subject_hash_old -in CA_Name.crt | head -1)
3.重命名文件,将证书命名为e5c3944b.0 #这个后面的数字就是为了防止重复的,如果存在同样hash的话,0可以改成1,一次类推
4.拷贝文件到手机存放根证书的目录:我这里不知道为什么直接adb进行root操作不行,所以是先拷贝到sdcard,然后再mv到存放根证书的目录
1)adb push e5c3944b.0 /sdcard/tmp/e5c3944b.0
2) adb shell
3) root权限 :su
4)重新挂载system分区为可读写:mount -o rw,remount /system
5) mv /sdcard/tmp/e5c3944b.0 /system/etc/security/cacerts/e5c3944b.0
6) cd /system/etc/security/cacerts
6) chmod 644 e5c3944b.0
5.重启设备即可
上述一顿操作之后,就可以实现大多数应用的ssl解密了,还不行的试试xposed插件,justtrustme,可以破解ssl pining
网友评论