React Native 异常错误:找不到凭证路径的信任锚

lmvvr0a8  于 2022-11-25  发布在  React
关注(0)|答案(1)|浏览(159)

我的React Native移动的应用程序突然无法与后端连接。(只有Android版本,iOS工作没有任何问题)。我也可以通过使用浏览器请求API没有问题。
这只是突然发生的,当问题开始时,在服务器端或移动的应用程序中没有任何变化,但所有Android应用程序停止连接到服务器。
移动的应用程序中的异常表示:java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
我回顾了堆栈溢出中的每一个答案,但到目前为止还没有一个有效的答案。以下是主要的几点:

  • 我的移动的应用程序是用react-native和Expo制作的,SSL证书是由LetsEncrypt颁发的。
  • 来自我的API的证书是正确的,它与iOS和任何网络浏览器完美配合。
  • 后端是与nginx 1.22.1服务器一起运行的react-js应用程序。

在移动的中:

  • 我尝试了Android的另一个应用程序(API测试器),我在尝试与我的API通信时遇到了同样的错误。(但同样,我的SSL证书似乎还可以)。
  • 在我的移动的应用程序中,我绑定到从互联网中的随机开放API获取数据,它的工作没有问题。
  • 我还尝试使用fetch而不是axios,但也无法连接。
  • 我也看如何做一个ssl证书pinning作为一个临时的解决方案,但问题是,我正在使用博览会,我没有找到这样做的方法。

一些相关的依赖版本包括:

"dependencies": {
    ...
    "axios": "^1.1.3",
    "expo": "^44.0.0",
    "expo-cli": "^5.4.3",
    "react": "17.0.1",
    "react-native": "0.64.3",
    "react-native-gesture-handler": "~2.1.0",
    ...
  },

在服务器中:

  • 我尝试使用由ZeroSSL颁发的证书,但仍然有同样的问题。
  • 我还尝试将证书颁发者添加到Android中的“受信任凭据”中,但这个颁发者已经在那里了。
  • 我还尝试使用带有--preferred-chain="ISRG Root X1"标志的certbot续订证书
    考虑到所有这些测试,这似乎是服务器端的问题,但没有其他设备有问题,只有Android;我还测试了证书,它是OK

我也用这个网站测试证书https://www.ssllabs.com/sstest
这就是
SSL Test
如果你能给予我任何线索,我将感激不尽。
问候!

nkcskrwz

nkcskrwz1#

我设法使应用程序与我的API成功连接,但我仍在研究问题的根源。
更多背景信息:

  • 我的移动的应用程序是由React Native + Expo制作的。
  • 我编译了一个iOS版本和另一个Android版本。
  • 这个问题只是突然发生在Android(在所有的Android设备没有在移动的应用程序或服务器作出任何改变)
  • iOS可以与API连接,没有问题
  • 网站可以与API通信,没有问题

这似乎是一个库axios的问题(特别是axiosinstance).它的奇怪,因为我没有改变任何东西在android应用程序,它只是突然停止工作.(在所有的android设备在同一时间).
在测试中,我发现axiosinstance在执行请求时会失败(我已经向您展示了一个例外),但令人费解的是,如果我在应用程序中执行的指向我的API的第一个请求是通过使用axios,它会完美地工作,在此之后,axiosinstance能够执行对我的API的任何请求,而不会失败。
我知道这听起来很奇怪,但现在我的应用程序又能用了。
另一方面,只是让你知道,我还测试了一个名为API Tester v5.6的Android应用程序,它无法连接到我的API给我同样的异常,但它的最后一个版本API Tester 5.7(这是几天前发布的)工作没有问题。
我还尝试用ApiClient v2.4.7连接到我的API,但失败了,出现了同样的异常。
再说一次,我不明白真实的的问题是什么,但肯定不是证书。
不管怎样,现在你知道了,也许我应该把这个问题发布给axios的家伙们?
问候!

相关问题