【问题标题】:AWS.HttpRequest error - unable to get local issuer certificateAWS.HttpRequest 错误 - 无法获取本地颁发者证书
【发布时间】:2020-01-20 00:44:40
【问题描述】:

我在 lambda 中使用 AWS.HttpRequest 来调用 HTTPS 端点,我收到此错误:

Error: unable to get local issuer certificate
    at TLSSocket.<anonymous> (_tls_wrap.js:1105:38)
    at emitNone (events.js:106:13)
    at TLSSocket.emit (events.js:208:7)
    at TLSSocket._finishInit (_tls_wrap.js:639:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:469:38) code: 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY'

在使用 AWS.HttpRequest 时,我找不到任何关于 HTTPS 调用的具体操作信息。

基本上,我的代码是这样的(相当琐碎):

    const req = new AWS.HttpRequest(url, region);
    req.method = 'POST';
    req.path = '/_bulk';
    req.body = doc;
    req.headers['Content-Type'] = 'application/json';
    req.headers.Host = endpoint.host;

    const send = new AWS.NodeHttpClient();
    send.handleRequest(req, null, (httpResp) => {
        let body = '';

        httpResp.on('data', (chunk) => {
            body += chunk;
        });
        httpResp.on('end', () => {
            resolve({ response: httpResp, body });
        });
    }, (err) => {
        reject(err);
    });

如果端点是 HTTP(同一端点,仅在端口 80 上),代码可以正常工作,但如果我通过 HTTPS 端点,则会引发该错误。

更新:我用 https 节点库替换了 AWS.HttpRequest,我得到了同样的错误。看来我错过了什么。

【问题讨论】:

  • 希望您已经确认端点拥有有效的证书。进行 https 调用不需要额外的配置。
  • 是的,它确实有一个有效的证书。此外,如果我在浏览器中点击该端点,如果证书无效,Google Chrome 浏览器会抱怨,并且它没有抱怨,加载响应很好。
  • 您的端点是否使用客户端证书验证?您可以尝试使用google.com 作为端点以确保它不是库问题。如果顺利的话,这与证书有关

标签: node.js amazon-web-services aws-lambda aws-sdk aws-sdk-js


【解决方案1】:

请尝试以下 AWS 祝贺

{
    Accesskey:your_access_key,
    Region: region_name,
    sslEnabled:false

}

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 2015-03-18
    • 2011-12-26
    • 1970-01-01
    • 2014-08-13
    • 2018-05-15
    • 2016-07-06
    相关资源
    最近更新 更多