使用证书,私钥和CA的AWS Lambda NodeJS请求

时间:2019-02-11 11:58:32

标签: node.js typescript ssl aws-lambda serverless-framework

要连接到特定的API,我们需要包括证书,私钥和部署到AWS Lambda的NodeJS函数中的CA。

在测试环境中,我们只能使用fs.readFileSync到测试服务器上的本地路径,但这不适用于AWS Lambda。

我们的电话如下:

return request({
      method: args.method,
      uri: this.baseUrl,
      headers: {
        "User-Agent": "XXXX-Wrapper"
      },
      form: this.queryParams,
      json: false,
      cert: this.cert,
      key: this.key,
      ca: this.ca
    }, callback);

是否可以从AWS KMS读取证书信息,还是将这些证书上传到私有S3存储桶并从那里读取证书的唯一方法?

我们还尝试将原始证书作为加密值存储在参数存储中,并从中读取它们作为NodeJS流程变量,但这似乎不起作用。

1 个答案:

答案 0 :(得分:1)

可能有更好的方法,但我们决定将证书放在具有严格访问和对象锁定控制的安全存储桶中。

在 TypeScript / NodeJS lambda 中,我们现在可以启动 S3 客户端并执行这样的请求

const cert = await S3.getFile(Config.get('...'), 'certificate.crt')
const key = await S3.getFile(Config.get('...'), 'private.key')
const ca = await S3.getFile(Config.get('...'), Config.get('ca_path'))

return request({
      method: args.method,
      uri: this.baseUrl,
      headers: {
        ....
      },
      form: formData,
      json: false,
      cert:cert,
      key:key,
      ca:ca
}, callback);

S3 服务只是 aws-node 库的包装器。