AWS Lambda 中的相互身份验证(2 向 SSL)

Mutual Authentication (2-way SSL) in AWS Lambda

我正在为小型 PoC 构建 AWS Lambda 服务。 PoC 中的流程是:

看起来像是一个简单的 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)

  1. 导出服务器证书并将其导入客户端信任库
  2. 加载您的客户端密钥库和信任库,我都保存在 s3 存储桶中
  3. 创建 TLS 上下文
SSLContext sslContext = SSLContexts.custom()
    .loadKeyMaterial(keyStore, stores.getKeyStorePassword().toCharArray())
    .loadTrustMaterialtrustStore, (X509Certificate[] chain, String authType) -> true)
    .build();
  1. 创建一个新的 Jersey 客户端
Client client = ClientBuilder.newBuilder()   
    .withConfig(new ClientConfig())    
    .sslContext(sslContext.get())   
    .trustStore(trustStore)
    .keyStore(keyStore, keyStorePassword)   
    .build();
  1. 拨打 API
client.target(endpoint).get();

我正在将我的密钥库凭据存储在参数库中。