上传失败:{错误:无法验证第一个证书

时间:2018-04-02 09:42:45

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

我在AWS-Lambda(Node.js)中编写了一个小代码,将文件发送到某个API。我能够运行代码,但我收到上传错误。

错误:Function Logs: START RequestId: 08ad7fab-3658-11e8-8483-a7fbad976cb7 Version: $LATEST 2018-04-02T09:27:17.787Z 08ad7fab-3658-11e8-8483-a7fbad976cb7 upload failed: { Error: unable to verify the first certificate at Error (native) at TLSSocket.<anonymous> (_tls_wrap.js:1092:38) at emitNone (events.js:86:13) at TLSSocket.emit (events.js:185:7) at TLSSocket._finishInit (_tls_wrap.js:610:8) at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:440:38) code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' } END RequestId: 08ad7fab-3658-11e8-8483-a7fbad976cb7

我写的代码是:

&#13;
&#13;
console.log('Loading Function');

const fs = require('fs');
const request = require('request');
const url  = require('url');
const https = require('https');
https.globalAgent.options.ca = rootCas;

var rootCas = require('ssl-root-cas').create();
 
// default for all https requests
// (whether using https directly, request, or another module)
require('https').globalAgent.options.ca = rootCas;

exports.handler = (event, context, callback) => {
var formData = {
  // Pass a simple key-value pair
  my_field: 'my_value',
  // Pass data via Buffers
  my_buffer: new Buffer([1, 2, 3]),
  // Pass data via Streams
  my_file: fs.createReadStream(__dirname + '/myfile.csv'),
  // Pass multiple values /w an Array
//   attachments: [
//     fs.createReadStream(__dirname + '/myfile.txt'),
//     fs.createReadStream(__dirname + '/myfile.txt')
//   ],
  
};
var req = request.post({url:'https://abc.xyz.com:443/file/', formData: formData}, function optionalCallback(err, httpResponse, body) {
  if (err) {
    return console.error('upload failed:', err);
  }
  console.log('Upload successful!  Server responded with:', body);
});
};
&#13;
&#13;
&#13;

当我尝试在本地运行相同的代码时,即使模块ssl能够下载所有证书,我也没有收到任何错误。当我在AWS-Lambda中尝试时,代码将无法下载证书。我甚至尝试在配置测试中添加JSON为rejectUnauthorized": false,仍然无法克服错误。

0 个答案:

没有答案