问题标签 [android-network-security-config]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
223 浏览

okhttp - 将网络安全配置与 OkHttp 和自定义 CA 相结合

我正在尝试添加一个 network-security-config 来限制连接到由我捆绑在应用程序中的一组 CA 签名的服务器(实际上是在应用程序使用的库中)。我有一个现有的设置,适用于将 CA 加载到信任库的位置。现在我添加了一个 network-security-config 并尝试对其进行测试,它似乎不起作用。

这是我试图做的:

AndroidManifest.xml:

网络安全配置.xml:

我对这个新配置的期望是不允许连接到由自签名 CA 签名的服务器,例如我捆绑的那些。但是当我运行应用程序时,连接工作正常,所以网络安全配置似乎不起作用......

我最终想做的是将我的 CA 添加到信任锚:

我的设置,应用程序:

  • Android 应用 Gradle 插件 7.0
  • 针对 API 30

图书馆:

  • Android 应用 Gradle 插件 7.0
  • 针对 API 30

电话:

  • 三星盖乐世 S20
  • 安卓 11 (=API 30)

为什么没有应用网络安全配置?

0 投票
0 回答
269 浏览

android - 使用 Okhttp 的自签名证书未找到用于证书路径的 Android 信任锚

我的服务器正在使用自签名证书。我正在使用 Okhttp + Retrofit 进行 api 调用。我从服务器获得了 crt 文件和公钥 [SHA-256]。按照这个和来自谷歌文档的这个链接,我在xml文件夹中创建了一个 network_security_config 文件,并将我的 crt 文件添加到raw文件夹中,并将其添加到清单文件中

这是我根据谷歌文档的网络配置文件:

调用 api 时出现以下异常

所以以下是我的查询:

  1. 这是实施自签名证书固定的正确方法吗?因为谷歌在他们的文档中明确提到“幸运的是,您可以通过配置应用程序的网络安全配置来教您的应用程序信任自定义 CA ,而无需修改应用程序内部的代码。”

  2. 如果 network_security_config 正确,那么如何检查服务器配置是否有问题(crt 文件 + 公钥)

  3. 我是否需要手动加载 crt 文件,然后使用 keystore + sslfactory 来配置 ssl pinning,如此链接中提到的

注意:现在只是为了运行 api,我使用了一个不验证证书链的信任管理器,如下所示:

0 投票
1 回答
330 浏览

android - 未找到证书路径的信任锚和信任锚可能的解决方案

我正在尝试了解网络安全配置和证书位。到目前为止,我从来没有费心在我的配置中设置信任锚,因为应用程序刚刚工作并依赖于服务器上设置的内容。

假设我有以下配置,但没有指定信任锚

  1. 在这种情况下,证书应用的默认策略是什么?
  2. 它会信任我服务器中设置的任何证书吗?

因为我认为我们有一个损坏的证书链(通过 sslchecker.. 验证),但我有一种情况,我无法向网络团队的同事解释,也无法理解。

如果证书链被破坏(无法到达中间证书)但在浏览器中工作,为什么在进行 https 调用时 Android 应用程序不起作用?

系统或用户是什么意思?我可以添加这个,应用程序将不再给我“找不到证书路径的信任锚”

你能发光吗?查看了 Android 文档,但我不清楚。你能花5分钟给我解释一下吗?谷歌这次没有帮助

谢谢

0 投票
0 回答
82 浏览

android - 如何在 android 手机上的用户凭据中使用 .pfx 证书安装?

使用 MDM 在移动设备上部署了一个 .pfx 证书:VMWare AirWatch。我可以在“安全”->“用户凭据”部分看到它。我制作了一个 Android 应用程序,并尝试访问需要证书的 url。首先我尝试使用谷歌浏览器,我尝试访问 url,但这不起作用。在我尝试在我自己的应用程序的 web 视图中访问 url 之后。那是行不通的。那么当证书安装在移动设备上时,访问由证书保护的服务器 url 的好方法是什么?谢谢!

0 投票
1 回答
36 浏览

android - 网络安全配置 API 23 及更低版本 - 未找到证书路径的信任锚 - 如何使用 API <= 23 处理自签名证书

我需要在我的应用程序上添加一个自签名证书,为此,我设置了网络安全配置。它在 API 31 上完美运行,但是当我在 API 21 上尝试时,

javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。

出现错误。

我在Android 文档中看到

面向 Android 6.0(API 级别 23)及更低版本的应用默认也信任用户添加的 CA 商店

所以即使

我清单中的行仅用于 API 级别 24 及更高级别,我知道它应该在 API 级别 23 及更低级别中正常工作。(或者也许我错了?)

有关信息,我的 res/xlm 文件夹中的 network_security_config.xml 存储如下:

我的 my_pem_cert.pem 存储在 res/raw 文件夹中,如下所示:

您知道为什么它不适用于 API 级别 23 及更低的级别吗?

0 投票
1 回答
21 浏览

ktor - 使用 android 的 network_security_config 文件在 kmm 中设置 ktor

我正在将证书固定集成到 ktor kmm ktor 是在 android 中使用 network_security_config 文件还是我们必须以编程方式使用以下代码进行设置?