【发布时间】:2021-03-01 14:25:41
【问题描述】:
首先我不得不说我对 react-native 和一般的 android 开发还很陌生(尽管对 react 和 js 很流利)。
我有一个通过 https 提供服务的 API 服务器(用 express 编写)。由于该系统将在内部使用(它是我们公司的内部服务),我正在使用我自己的 CA 和一组自签名证书用于它的所有部分(整个系统由多个相互通信的服务器组成并提供不同的东西)。每件事都运行良好。除了android部分!
我有一个 android 应用程序(react-native),它应该向其中一台服务器(具有全局静态 IP 的服务器)发送一些内容。
首先我尝试做我通常会在 js 中做的事情。我用fetch。但它失败并出现错误:
[TypeError: Network request failed]
我怀疑 HTTPS 和整个自签名证书的情况可能是罪魁祸首,所以我用一个普通的 HTTP 端点对其进行了测试,它确实有效。
我想也许我需要在手机上安装我的 CA,我做到了。但无济于事。
经过一番搜索,我偶然发现了一些关于 android 的新变化,它默认不信任用户安装的 CA,他们建议添加
android:networkSecurityConfig="@xml/network_security_config"
到清单文件,这个:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
在res/xml 目录中。
我做了所有这些,但没有用。
所以我被困住了,任何帮助将不胜感激。
P.S:我不懂 Java,但是如果您有涉及一些本机代码的解决方案,如果您提供广泛的解释,我可以管理它:D
【问题讨论】:
标签: android react-native https self-signed