java.security.cert.CertPathValidatorException: Trust anchor for certification path not found in React-Native
我正在
证书在桌面和移动浏览器以及应用程序门户网站上都可以使用,但不能在 android 应用程序中使用。
版本
安卓:8.0.0
反应原生:0.55.0
错误
"java.security.cert.CertPathValidatorException: Trust anchor for
certification path not found."
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">10.0.2.2</domain><!-- Debug port --> <domain includeSubdomains="true">abc.online</domain> <trust-anchors> <certificates src="@raw/abc"/> </trust-anchors> </domain-config> </network-security-config> |
这对我有用,10.0.2.2 是模拟器与您机器上的 localhost 通信的默认编号。如果您使用的是手机,它应该是另一个 IP 地址。
我已经使用以下解决方案解决了这个问题。
从 Android 9(Pie) 开始,我们需要将 networkSecurityConfig 设置为 AndroidManifast.xml
1 | </application> |
现在在
1 2 3 4 5 | <network-security-config> <domain-config cleartextTrafficPermitted="false"> <domain includeSubdomains="true">172.16.33.1</domain> </domain-config> </network-security-config> |
更多信息,请查看以下链接
https://codelabs.developers.google.com/codelabs/android-network-security-config/#3
https://developer.android.com/training/articles/security-config
https://medium.com/@son.rommer/fix-cleartext-traffic-error-in-android-9-pie-2f4e9e2235e6
这个异常的意思是你使用的域名是stg server,意思是它有私有dns。
解决方案 1
因此,在这种情况下,请您的服务器人员使用 ext 制作证书文件。 .cert 给你。然后将其安装在您的设备上,然后将 dns1 和 dns2 添加到您的 wifi。
解决方案 2
而不是使用域名作为 url 使用你的服务器的 ip 地址。它也可以解决这个问题