okhttp - 将网络安全配置与 OkHttp 和自定义 CA 相结合
问题描述
我正在尝试添加一个 network-security-config 来限制连接到由我捆绑在应用程序中的一组 CA 签名的服务器(实际上是在应用程序使用的库中)。我有一个现有的设置,适用于将 CA 加载到信任库的位置。现在我添加了一个 network-security-config 并尝试对其进行测试,它似乎不起作用。
这是我试图做的:
AndroidManifest.xml:
<application
...
android:networkSecurityConfig="@xml/network_security_configuration"
...
网络安全配置.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<debug-overrides>
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</debug-overrides>
</network-security-config>
我对这个新配置的期望是不允许连接到由自签名 CA 签名的服务器,例如我捆绑的那些。但是当我运行应用程序时,连接工作正常,所以网络安全配置似乎不起作用......
我最终想做的是将我的 CA 添加到信任锚:
<certificates src="@raw/my_ca" />
我的设置,应用程序:
- Android 应用 Gradle 插件 7.0
- 针对 API 30
图书馆:
- Android 应用 Gradle 插件 7.0
- 针对 API 30
电话:
- 三星盖乐世 S20
- 安卓 11 (=API 30)
为什么没有应用网络安全配置?
解决方案
推荐阅读
- jquery - Django,使用 AJAX 过滤列表
- python - 如何有效地将 numpy ndarray 转换为元组列表?
- javascript - 如何在 Vue.js 中基于点击事件显示嵌套对象的数据
- java - 是否有显示所有 Linux 操作系统(尤其是 RHEL)的 MeterRates 的 Azure RateCard?
- oauth - 验证 Google 同意屏幕时出现问题,收到“应用未验证”消息
- html - 如何为倾斜矩形的高度设置动画?
- c++ - 错误:将“数据”声明为引用数组
- jdbctemplate - 如何自行释放c3p0的空闲连接?
- android - 预填充的数据库在 API 28 中不起作用会引发“没有这样的表”异常
- go - 使用 dep for golang 时如何从供应商文件夹中排除内部依赖项