一.简介
1.假如设备是android 7.0+的系统同时应用设targetSdkVersion >= 24的话
那么应用默认是不信任安装的Fiddler用户证书的
所以你就没法抓到应用发起的https请求
然后你在Fiddler就会看到一堆200 HTTP Tunnel to xxx.xxx.xxx:443的请求日志
这些都是没有成功抓取的https请求
二.下面重点介绍一下各种解决方案
1.在抓包测试中相信很多人都遇到过Android高版本(Android7.0以上)系统无法抓包的问题
1.1.由于在测试过程中对分析定位问题很不方便
1.1.1.所以就想找开发的同学帮忙,结果开发也说搞不定,那只能自己解决
2.现象:Android6.0及以下系统手机可以抓取https包,
2.1.而Android7.0及以上系统手机不能抓取https包(安装https证书也不行)
3.原因
3.1.Android7.0+ 的版本新增证书验证(系统证书)
3.1.1.所以app内不再像原来一样默认信任用户的证书
3.2.谷歌在安卓7.0修改安全策略,安卓系统大于7.0时
3.2.1.应用不在信任用户安装的证书文件
3.2.2.用户添加的CA证书不能再用于安全连接,对于https传输的数据就抓取不到
3.3.Android 7.0+的版本不能抓包,由Android更新了网络的安全性配置api >24
3.3.1.默认不信任用户导入的CA证书,所以需要配置文件,来信任用户导入的证书
3.4.官方说明:https://developer.android.google.cn/training/articles/security-config.html
By default, secure connections (using protocols like TLS and HTTPS)
from all apps trust the pre-installed system CAs, and apps targeting
Android 6.0 (API level 23) and lower also trust the user-added CA
store by default.
3.5.果然在Android6.0 (API level 23)及以前
3.5.1.APP默认信任系统自带的CA证书以及用3于导入的CA证书
3.5.2.Android6.0 (API level 23)以后
3.5.3.APP默认只信任系统自带的CA证书,对于用户导入的不予理会