node.js - 通过 HTTPS 将 Node.JS 和 Unirest 用于 REST 客户端抛出证书问题

标签 node.js rest ssl unirest

我正在尝试使用 Unirest 在 Node.JS 中创建我的第一个 REST 客户端。它旨在与通过端口 443 通过 Nginx 代理的 Flask RestPlus 服务器通信。我可以在 Chrome 中访问 Swagger 文档而没有 SSL 问题。 SSL 证书不是自签名的,是通过 Digicert 颁发的,在我工作的地方内部。当我使用 Unirest 尝试“获取”请求时,我得到了一个unable to get local issuer certificate。我可以将“strictSSL(false)”函数添加到我的 api 调用中,错误就会消失,但我不想关闭 SSL 检查。我在谷歌上到处寻找答案,但没能挖掘出任何东西。任何帮助,将不胜感激。我在 Windows 10 环境中运行 Node.JS 进行开发/测试,但一旦完成,代码将部署到 Cloud Foundry/Linux 环境中。

Node.JS 代码: unirest.get("https://path/to/api/call").headers(headers).end(function (res) { console.log(res); });/p>

给出的错误:

{ error: { Error: unable to get local issuer certificate at Error (native) at TLSSocket. (_tls_wrap.js:1062:38) at emitNone (events.js:86:13) at TLSSocket.emit (events.js:185:7) at TLSSocket._finishInit (_tls_wrap.js:586:8) at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:416:38) code: >'UNABLE_TO_GET_ISSUER_CERT_LOCALLY' } }

最佳答案

我找到了解决方案!使用 ssl-root-cas 模块并将以下代码添加到我的 rest-client 文件的顶部,问题已解决。

var rootCas = require('ssl-root-cas/latest').create();
rootCas.addFile(__dirname + '/path/to/ca.pem');
require('https').globalAgent.options.ca = rootCas;

希望遇到同样问题的其他人会发现这很有用。

关于node.js - 通过 HTTPS 将 Node.JS 和 Unirest 用于 REST 客户端抛出证书问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119986/

相关文章:

java - 通过 X.509 客户端证书(.cer 文件)进行 Python 身份验证并与 Java 进行比较

node.js - 在 r.js 构建文件中加载 ngmin 失败

java - RestTemplate/HttpClient 的缺点/优点

ssl - WebSocket 连接到 'wss://' 失败 : Unexpected response code: 500

java - 用于删除用户/参与者的 JIRA Rest API DELETE 调用不会删除用户

java - 需要实现自定义 Fitnesse 响应器

ssl - 如何保护 ELK 和 Filebeat?

javascript - 停止 Node Webkit 在未聚焦/最小化时暂停

javascript - 在 Node js 中处理嵌套 promise 的错误

node.js - 具有多行相同外键对的多对多 "through"表只允许添加一次