前言
Android7以后,系统不再信任用户级的证书,只信任系统级的证书,所以要抓https的包就需要把我们的代理程序证书安装至Android的系统目录中。
解决有二种方案:
- 在app清单文件AndroidManifest.xml中开启网络安全配置,信任用户证书,重新打包APP;
- 将代理程序的证书安装至Android的系统目录
系统证书导入
证书准备
环境需求:
- 一台已root的android设备
- openssl
①将Filddler或者其他抓包程序的证书导出,一般为xxx.cer或者xxx.pem
②使用openssl的x509指令进行cer证书转pem证书 和 用md5方式显示pem证书的hash值
// 1.证书转换,已经是pem格式的证书不需要执行这一步
openssl x509 -inform DER -in xxx.cer -out cacert.pem
// #2. 进行MD5的hash显示
openssl版本在1.0以上的版本的执行这一句
openssl x509 -inform PEM -subject_hash_old -in cacert.pem
openssl版本在1.0以下的版本的执行这一句
openssl x509 -inform PEM -subject_hash -in cacert.pem
将pem证书重命名
mv cacert.pem 347bacb5.0
将新证书放入手机系统证书目录
系统证书目录位置,需要拷贝至此目录必须拥有root权限
可以使用root explorer
工具操纵系统目录
/system/etc/security/cacerts
重启手机就可以使证书生效了