今天把项目target升26了。然后抓包时候,手机上toast “CETIFICATE_FAILD”。网上查了下是因为android7.0以上的安全措施。
In Android Nougat, we’ve changed how Android handles trusted certificate authorities (CAs) to provide safer defaults for secure app traffic. Most apps and users should not be affected by these changes or need to take any action. The changes include:(翻译:在Android Nougat中,我们改变了Android处理可信证书颁发机构(CAs)的方式,为安全的应用程序流量提供更安全的默认值。大多数应用程序和用户不应该受到这些变化的影响,也不需要采取任何行动。这些变化包括:)
Safe and easy APIs to trust custom CAs.
Apps that target API Level 24 and above no longer trust user or admin-added CAs for secure connections, by default.
All devices running Android Nougat offer the same standardized set of system CAs—no device-specific customizations.(翻译:安全而简单的api可以信任自定义CAs。
默认情况下,针对API级别24或更高的应用程序不再信任用户或管理员添加的CAs来实现安全连接。
所有运行Android Nougat的设备都提供相同的标准化系统集,没有特定于设备的定制。)
解决方案如下:
- AndroidManifest.xml添加一下配置
<application
..
android:networkSecurityConfig="@xml/network_security_config"
..>
- 创建network_security_config
<network-security-config>
<domain-config>
<domain includeSubdomains="true">xxx.com(app域名)</domain>
<trust-anchors>
<certificates src="@raw/charles_proxy_ssl_proxying_certificate"/>
</trust-anchors>
</domain-config>
</network-security-config>
3.将代理的CA证书放入到raw文件夹下
这样就解决了。详细的官方文档:
Android Nougat中对可信证书颁发机构的更改
网络安全配置
网友评论