Android版本大于7,需要root,因为证书安装必须要安装到系统目录(/system/etc/security/cacerts)下才能被信任,用户目录的证书不被信任。
1、下载安装最新版本Fiddler;
2、配置Fiddler
这里的8080就是代理端口
3、保证手机和电脑是同一个局域网下,在手机WIFI连接的高级选项中,可以配置代理IP(Fiddler机器IP)和代理端口(上面的8080)
4、手机上安装证书
先从Fiddler中导出证书:
actions有个“Export Root Certificate to Desktop”,点击后在桌面生成证书:
将证书上传到任意一个linux机器上,通过以下命令将,生成手机上的证书:
openssl x509 -in FiddlerRoot.cer -inform DER -out 1.pem -outform PEM
#该命令会产生一个hash值269953fb,后续根据这个值使用
openssl x509 -inform PEM -subject_hash_old -in 1.pem | head -1
cp 1.pem 269953fb.0
openssl x509 -inform PEM -text -in 1.pem -out /dev/null >> 269953fb.0
将证书269953fb.0通过adb命令上传到手机临时目录,然后在手机上将证书转移到/system/etc/security/cacerts ,这个目录需要root才有读写权限,否则只读,无法上传证书。
5、到这里,基本就完成了,然而当我尝试打开https://www.baidu.com时,发现连接不了网络,网上很多文章说改策略表的改Fiddler自定义脚本的,都没用,最后才发现,我的root手机上,虽然证书已经放到系统目录下,但仍然需要重启手机后然后手动点击信任证书,才可以。