我正在构建一个小型 ReactNative iOS 应用程序。在其中,我使用获取 API 向我控制的服务器发出简单的获取请求,该服务器具有有效但自签名的 SSL 证书。可以理解,这会导致错误。
在 iOS/JSC 之间,我不确定如何(或什么!)我可以为我的应用配置以忽略此错误 - 到目前为止我找到的所有答案都与 Objective-C 解决方案相关,我正在寻找对于我可以在 JSC 环境中使用的东西。
最佳答案
我遇到了同样的问题。正如您所指出的,似乎让 native iOS 应用程序使用自签名证书的唯一方法是编写/修改 Objective-C 代码,这对于使用 React Native 的 JavaScript 开发人员来说不是一个好方法。因此,我认为您的问题是 X/Y problem ,并且我建议首先使用与使用自签名证书不同的方法来解决您的整体问题。
我改用真实证书进行开发。以下是我为使我的本地开发 API 使用 SSL 和 React Native 所做的工作。它免费且简单。
- ssh 进入您的域关联的公共(public)服务器
- 安装letsencrypt
- 为您的开发子域生成证书
- dev.my-domain.com 用于在本地开发我的网站/webapp
- api.dev.my-domain.com 用于 api
./letsencrypt-auto certonly --standalone -d dev.my-domain.com -d api.dev.my-domain.com
- 将 fullchain.pem 和 privkey.pem 复制到本地机器
- 可能在
/etc/letsencrypt/live/dev.my-domain.com 下找到
- 从远程计算机获取文件的一种方法:
scp -r your_user@123.123.(...):/etc/letsencrypt/live/dev.my-domain.com ./
- 可能在
- 用 fullchain.pem 和 privkey.pem 替换您的自签名证书
- 将你使用的dev.your-domain.com和其他子域名指向你开发机器的ip
- 您可以在要使用该域的每台机器上修改您的
hosts
文件 - 如果您的路由器有 dnsmasq,您可以对整个网络执行类似
address=/dev.my-domain.com/192.168.(...)
的操作(我推荐这样做)<
- 您可以在要使用该域的每台机器上修改您的
此时,因为您正在为您正在访问的域使用真实、可信的证书,所以您的 api 现在将在浏览器和开发中的设备上受到信任!
关于javascript - 在 ReactNative 应用程序中使用获取 API 忽略自签名 SSL 证书的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892161/