首页 > 解决方案 > 如何管理要在 AWS Lambda 中使用的双向 TLS 的客户端证书

问题描述

我们的团队正在使用 AWS Lambda 函数和 API Gateway 来促进与欧洲开放银行 API 的连接。(PSD2)。

我们的 Lambda 是用 NodeJS 编写的。

PSD2 需要 Mutual TLS,这很好,我们已经正确实施了一切并在沙盒环境中工作。

示例请求如下所示:

{
  hostname: '[bank hostname]',
  path: '[bank api endpoint]',
  method: 'GET',
  headers: {
    accept: 'application/json',
    signature: 'XXX',
    date: 'XXX',
    digest: 'XXX',
    'x-request-id': 'XXX',
    'tpp-signature-certificate': '[PATH_TO_CERTIFICATE]',
    authorization: 'Bearer [accessToken]',
  },
  cert: fs.readFileSync('/var/task/certs/cert.crt'), // Buffer
  key: fs.readFileSync('/var/task/certs/private.key'), // Buffer
} 

我们目前遇到的问题是我们不确定在哪里安全地存储我们的证书。目前,我们只是将它们存储在代码库中的资产文件夹中,这并不理想,出于显而易见的原因,我们希望将它们从代码库中移出。

我们一直在研究 AWS ACM。但是,尚不清楚我们将如何检索证书的路径(在上传它们之后)以便在上面的请求中使用它。

所以我的问题是我们如何使用 AWS 安全地存储我们的证书,以便我们可以在 HTTPS 请求中使用它们?

标签: node.jsamazon-web-servicesaws-lambdaaws-api-gatewaypsd2

解决方案


您无法从 ACM 检索证书,实际上这些证书仅附加到 AWS 资源,例如 CloudFront、ELB 和 API 网关。

要检索内容,有几个解决方案。

第一种是将其存储在凭证/机密存储中,AWS 在机密管理器服务中提供此功能。此外,您可以将SecureString存储在系统管理器参数存储中。

或者,您可以使用第三方解决方案,例如HashiCorp Vault

使用这种方法,如果您需要文件存在于磁盘上,则需要将输出存储在 tmp 文件存储中。

如果这些方法对您不起作用,您可以使用AWS EFS。最近添加了一项支持,以允许 Lambda 将 NFS 挂载附加到共享存储。


推荐阅读