如何为nodejs aws-sdk配置caCert和代理,“错误:无法获取本地发行者证书”

问题描述

我已经成功地使用底部代码块配置了代理和证书文件,但是我仍然遇到以下证书错误。我已经在这个问题上停留了一段时间,请您帮我解决这个问题。

{ 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)
  message: 'unable to get local issuer certificate',code: 'NetworkingError',region: 'eu-west-1',hostname: 's3.eu-west-1.amazonaws.com',retryable: true,time: 2020-09-08T14:51:27.596Z } 'Error: unable to get local issuer certificate\n    at TLSSocket.<anonymous> (_tls_wrap.js:1105:38)\n    at emitNone (events.js:106:13)\n    at TLSSocket.emit (events.js:208:7)\n    at TLSSocket._finishInit (_tls_wrap.js:639:8)\n    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:469:38)'

操作系统:Windows 7
节点:v8.10.0
npm:5.6.0
openssl:'1.0.2n'
TLS:v1.2
企业网络,位于代理后面
*通过PowerShell命令设置环境变量后,aws-cli可以正常工作

SETX AWS_CA_BUNDLE c:/projects/backend/tls-cabundle.pem

*我已使用以下命令更新了.npmrc文件,也尝试了使用-g标志。

npm配置设置cafile c:/projects/backend/tls-cabundle.pem
npm config set strict-ssl false

const AWS = require("aws-sdk");
const fs = require("fs");
const path = require("path");
const url = require("url");
const HttpsProxyAgent = require("https-proxy-agent");

const certs = [fs.readFileSync(path.join(__dirname,"tls-cabundle.pem"))];

const proxyOptions = {};
Object.assign(proxyOptions,url.parse("http://USERNAME:PASSWORD@primary-proxy.PROXYURL:8080"));
Object.assign(proxyOptions,{
  rejectUnauthorized: true,ca: certs,});

const creds = new AWS.Credentials({
  accessKeyId: "****************",secretAccessKey: "***********************",sessionToken: "**************************************************************",});
AWS.config.credentials = creds;

AWS.config.update({
  region: "eu-west-1",httpOptions: {
    agent: new HttpsProxyAgent(proxyOptions),},});

// Create S3 service object
const s3 = new AWS.S3({ apiVersion: "2006-03-01" });

// use aws-sdk S3 service object to list S3 Buckets as per https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listBuckets-property
s3.listBuckets(function (err,data) {
  if (err) console.log(err,err.stack);
  else console.log(data);
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...