android 7.0证书导致的抓包问题

用charles或fiddler抓app包的https接口必须要安装ca证书,才能正常抓包,

安卓7之前把ca证书安装到用户证书下即可,但安卓7以上只有系统级证书才能被信任,所以为了能正常抓包,需要把ca证书安装到系统证书下

准备工作:
电脑安装了Charles(其他抓包工具也是一样的原理)
一台已root手机(模拟器也可以,但部分app会检测)
电脑安装adb

1.下载证书

v2-1719359c9c98e33b716363c4e5a5442c_1440w.jpg

把证书(.pem格式)导出到本地路径,名称为charles.pem

2.修改名称

打开终端cmd,并进入到证书目录,执行以下命令:

openssl x509 -inform PEM -subject_hash_old -in charles.pem 

此时cmd输出如下:

image.png

将输出的类似 ffab1f6d 的值进行复制

重命名证书:
Android系统根目录下的证书名格式:哈希值.数字,即<8位md值>.<0> , 后缀数字用来区分不同版本
本例子的证书名称就是:ffab1f6d.0

导入到手机
执行以下adb命令将证书导入到/system/etc/security/cacerts/

adb root
adb remount
adb push 8efb32d4.0 /sdcard/
adb shell
su
mount -o rw,remount /system
mv /sdcard/8efb32d4.0 /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/8efb32d4.0
reboot

结束。

你可能感兴趣的:(android 7.0证书导致的抓包问题)