node.js - 如何管理要在 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 请求中使用它们?
解决方案
您无法从 ACM 检索证书,实际上这些证书仅附加到 AWS 资源,例如 CloudFront、ELB 和 API 网关。
要检索内容,有几个解决方案。
第一种是将其存储在凭证/机密存储中,AWS 在机密管理器服务中提供此功能。此外,您可以将SecureString存储在系统管理器参数存储中。
或者,您可以使用第三方解决方案,例如HashiCorp Vault。
使用这种方法,如果您需要文件存在于磁盘上,则需要将输出存储在 tmp 文件存储中。
如果这些方法对您不起作用,您可以使用AWS EFS。最近添加了一项支持,以允许 Lambda 将 NFS 挂载附加到共享存储。
推荐阅读
- regex - 正则表达式仅匹配一个大写字母
- python - 带有插入规则的 SQLAlchemy 和 PostGreSQL 什么都不做(重复)
- python - 根据 QTableView 中的用户输入更改行的颜色
- javascript - 如何从带有硒的 Chrome 网络驱动程序中获取 console.trace() 结果?
- r - 足球 R 编程中的 H2H 比赛
- regex - 如何将文本与变音符号匹配?
- node.js - 在 node.js 尖锐的 AWS Lambda 上使用 .overlayWith() 时出错
- android - 为什么添加值时不会触发这些 ValueEventListener?
- python - 图例句柄中的圆圈在 matplotlib 中不起作用
- swift - 根据字符串更改选择 UiPickerView 文本