首页 > 解决方案 > 获取已知的 SSL 证书并将它们传递给 nodejs 请求

问题描述

我正在尝试从我的工作中向这个 API 发出 GET 请求。要访问它,您必须在 VPN 上。我通过浏览器发出请求,它返回正确的 json。然后我尝试通过以下代码通过nodejs发出请求:

var https = require('https');

var options = {
    host: 'work.domain.org',
    path: '/path/to/api/54023',
    method: 'GET',
    headers: {
        'Host' : 'work.domain.org',
        'Content-Type': 'application/json'
    }
};

var request = https.request(options, function (res) {
    console.log('statusCode:', res.statusCode);
    console.log(res);
});

request.on('error', function(err) {
    console.log(err)
});

这会出现以下错误:

Error: unable to get local issuer certificate
    at TLSSocket.onConnectSecure (_tls_wrap.js:1497:34)
    at TLSSocket.emit (events.js:315:20)
    at TLSSocket._finishInit (_tls_wrap.js:932:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:706:12) {
  code: 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY'
}

我做了一些研究,发现我可以从浏览器中获取证书。通过单击小安全锁符号,我可以查看使用了哪些证书。打开后我进入了证书路径选项卡,发现使用的证书如下(名称已更改):

SOME_ROOT
        |
        |___ SOMETHING_PKI
                         |
                         |___ work.domain.org

我可以进入我的 chrome 设置并将 ROOT 和 PKI 证书导出为 .cer 文件。虽然我找不到路径的底部,但我不知道是否需要(work.domain.org 证书)。如何使用这些证书来验证我的请求?

标签: node.jssslrequestssl-certificate

解决方案


推荐阅读