javascript - 在 ReactNative 应用程序中使用获取 API 忽略自签名 SSL 证书的错误?

标签 javascript ios ssl react-native

我正在构建一个小型 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/

相关文章:

ios - 在 UITableviewCell 中嵌入的 UITableView 中滚动(ios7)

Debian 上的 Apache SSL "Unable get local issuer certificate"

javascript - 如何递归调用ajax直到某个条件成立?

javascript - 在 Electron 应用程序中的 iframe 中加载来自外部站点的本地镜像

android - 如何找出用于 fontAwesome 中字符的 XAML 代码?

PHPMailer 生成 PHP 警告 : stream_socket_enable_crypto(): Peer certificate did not match expected

apache - 安装了 SSL 证书,但是当我进入我的域时,我必须包含 https ://before the URL

Javascript - 如何修改客户端剪贴板中的文本?

javascript - 如何在localstorage中存储一个完整的div

ios - 如何在 Swift 中从 Firestore 获取对象数组?