使用Node.JS和Unirest for REST客户端通过HTTPS抛出证书问题

时间:2017-02-08 17:38:22

标签: 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); });

给出错误:

  

{错误:     {错误:无法获得本地颁发者证书         在错误(本机)         在TLSSocket。 (_tls_wrap.js:1062:38)         在emitNone(events.js:86:13)         在TLSSocket.emit(events.js:185:7)         在TLSSocket._finishInit(_tls_wrap.js:586:8)         在TLSWrap.ssl.onhandshakedone(_tls_wrap.js:416:38)代码:>' UNABLE_TO_GET_ISSUER_CERT_LOCALLY' }}

1 个答案:

答案 0 :(得分:0)

我能够找到解决方案!使用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;

如果遇到同样的问题,希望其他人会觉得这很有用。