AWS Lambda 中的相互身份验证(2 向 SSL)
Mutual Authentication (2-way SSL) in AWS Lambda
我正在为小型 PoC 构建 AWS Lambda 服务。 PoC 中的流程是:
- 通过 POST、
进行(文本)输入
- 执行一个小的字符串操作 +
- 将操作值存入DynamoDB,然后
- 通过 HTTP POST
将相同的(操纵的)值发送到特定的 URL
看起来像是一个简单的 lambda 教程示例,但对我来说棘手的部分是授权。我必须 POST 的 URL 只允许通过 SSL 证书相互验证的请求。我怎样才能在 Lambda 中实现这一目标?
我找不到足够的答案来完成这项工作。我查看了使用 AWS API 网关 2 路 ssl 证书选项。但是,为此,我需要将接收部分证书安装到证书库中。甚至可能吗?或者唯一的方法是使用微型 EC2 盒子?
在 Lambda,我可以使用 Node.JS、Java 或 Python。
如何在AWS Lambda中实现双向TLS?
首先要为 Hakky54 鼓掌,因为这个很好的相互 TLS 教程。
https://github.com/Hakky54/mutual-tls-ssl
我按照他的教程了解和实施了 AWS Lambdas 的 MTLS。您还可以在部署到 AWS 之前通过 运行 spring-boot 应用程序在本地测试您的实施,这样可以节省大量时间。
步骤(所有命令都记录在上面link)
- 导出服务器证书并将其导入客户端信任库
- 加载您的客户端密钥库和信任库,我都保存在 s3 存储桶中
- 创建 TLS 上下文
SSLContext sslContext = SSLContexts.custom()
.loadKeyMaterial(keyStore, stores.getKeyStorePassword().toCharArray())
.loadTrustMaterialtrustStore, (X509Certificate[] chain, String authType) -> true)
.build();
- 创建一个新的 Jersey 客户端
Client client = ClientBuilder.newBuilder()
.withConfig(new ClientConfig())
.sslContext(sslContext.get())
.trustStore(trustStore)
.keyStore(keyStore, keyStorePassword)
.build();
- 拨打 API
client.target(endpoint).get();
我正在将我的密钥库凭据存储在参数库中。
我正在为小型 PoC 构建 AWS Lambda 服务。 PoC 中的流程是:
- 通过 POST、 进行(文本)输入
- 执行一个小的字符串操作 +
- 将操作值存入DynamoDB,然后
- 通过 HTTP POST 将相同的(操纵的)值发送到特定的 URL
看起来像是一个简单的 lambda 教程示例,但对我来说棘手的部分是授权。我必须 POST 的 URL 只允许通过 SSL 证书相互验证的请求。我怎样才能在 Lambda 中实现这一目标?
我找不到足够的答案来完成这项工作。我查看了使用 AWS API 网关 2 路 ssl 证书选项。但是,为此,我需要将接收部分证书安装到证书库中。甚至可能吗?或者唯一的方法是使用微型 EC2 盒子?
在 Lambda,我可以使用 Node.JS、Java 或 Python。
如何在AWS Lambda中实现双向TLS?
首先要为 Hakky54 鼓掌,因为这个很好的相互 TLS 教程。 https://github.com/Hakky54/mutual-tls-ssl
我按照他的教程了解和实施了 AWS Lambdas 的 MTLS。您还可以在部署到 AWS 之前通过 运行 spring-boot 应用程序在本地测试您的实施,这样可以节省大量时间。
步骤(所有命令都记录在上面link)
- 导出服务器证书并将其导入客户端信任库
- 加载您的客户端密钥库和信任库,我都保存在 s3 存储桶中
- 创建 TLS 上下文
SSLContext sslContext = SSLContexts.custom()
.loadKeyMaterial(keyStore, stores.getKeyStorePassword().toCharArray())
.loadTrustMaterialtrustStore, (X509Certificate[] chain, String authType) -> true)
.build();
- 创建一个新的 Jersey 客户端
Client client = ClientBuilder.newBuilder()
.withConfig(new ClientConfig())
.sslContext(sslContext.get())
.trustStore(trustStore)
.keyStore(keyStore, keyStorePassword)
.build();
- 拨打 API
client.target(endpoint).get();
我正在将我的密钥库凭据存储在参数库中。