表现:安卓设备已安装测试CRT中间证书的情况下,webview加载https页面时界面展示为空白或弹窗提示证书过期或异常,https请求发起失败,同时Mobile Debug界面抓包提示:
Android系统对于证书是分为,系统预装证书 和 用户安装证书。
其中Android 6.0(API 级别 23) 及更低版本,应用默认信任 系统预装证书和用户安装证书
<base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </base-config>
Android 7.0(API 级别 24) 以后则默认仅信任 系统预装证书。
<base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config>
您可通过【添加安全配置文件】的方式增加对测试证书的支持:
首先,需要 在 manifest 处声明配置文件
<?xml version="1.0" encoding="utf-8"?> <manifest ... > <application android:networkSecurityConfig="@xml/network_security_config" ... > ... </application> </manifest>
然后编辑network_security_config.xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config> <trust-anchors> <certificates src="user"/> <certificates src="system"/> </trust-anchors> </base-config> </network-security-config>
最后重新编译apk即可测试。
更多资料您可查看:https://developer.android.google.cn/training/articles/security-config.html
如果您只想调试http数据,https部分的数据不需要捕获解析,您可以在Mobile Debug的【代理捕获列表窗口】的右上角【设置】界面中找到【代理SSL捕获规则设置】将【启用SSL捕获】关闭即可。
注意,该操作捕获到的ssl请求Method将始终为Tunnel,如下:
已root的Android设备
如果您的Android设备已获取root权限,新版本Mobile Debug已支持Android双证书安装请按照[接入新设备]指南中描述同时安装PEM根证书和CRT中间证书
将导出的PEM根证书文件(.0结尾)使用adb工具或者拷贝到手机使用root explorer拷贝到Android设备的/system/etc/security/cacerts/ 下。
将导出的CRT中间证书安装到用户凭据中.
请注意:若检查确认PEM根证书文件已导入系统目录但是证书仍然报不安全问题,请检查导入的证书文件的权限信息,确保和其他证书文件一致(至少要给予所有用户可读权限).
最后,如果您的设备未root无法安装PEM根证书,在安装了中间证书情况下,您可以代理抓包/调试部分浏览器和部分内嵌了webview的APP的HTTPS网页,这取决于具体APP的证书策略,请自行测试.