在 Android 7.0 以上的系统中,Google 引入了一种名为网络安全配置(Network Security Configuration)的功能。具体详细介绍可见官方文档
简单介绍用于配置调试模式(在android:debuggable=true)的 CA
- 将信任文件放在res/raw 文件夹下
- 添加信任附加 CA 到res/xml (network_security_config)
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificates src="@raw/debug_ca"/>
</trust-anchors>
</debug-overrides>
</network-security-config>
- 配置清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
在7.0+上手机安装证书也不可访问的https请求的疑问?
目的地不在 [domain-config
] 涵盖范围内的所有连接所使用的默认配置。
- 未设置的任何值均使用平台默认值。面向 Android 7.0(API 级别 24)及更高版本应用的默认配置如下所示:
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
- 面向 Android 6.0(API 级别 23)及更低版本应用的默认配置如下所示:
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
7.0+默认配置没有user,所以当证书安装到手机上时,也不会被项目信任。所以很多手机即便安装了证书还是不可访问https请求。