我正在尝试使用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' }}
答案 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;
如果遇到同样的问题,希望其他人会觉得这很有用。