AWS Lambda中的双向SSL(Mutual Authentication)

10
我正在为一个小 PoC 构建 AWS Lambda 服务。PoC 中的流程如下:
  • 通过 POST 接受 (文本) 输入,
  • 进行一些小的字符串操作 +
  • 将操作后的值存储到 DynamoDB,并且
  • 通过 HTTP POST 发送相同的 (操作后的) 值到特定 URL
看起来像是一个简单的 Lambda 教程示例,但对我来说棘手的部分是授权。我必须要向只允许通过 SSL 证书相互认证的请求发送到的 URL 进行 POST。我该如何在 Lambda 中实现这一点?
我找不到足够的答案来使其工作。我尝试了使用 AWS API 网关提供的两路 SSL 证书选项。但是,为此工作,我需要将接收方证书安装到证书存储中。这是否可能?或者唯一的方法就是使用微型 EC2 盒子?
在 Lambda 中,我可以使用 Node.JS、Java 或 Python。
1个回答

2
如何在AWS Lambda中实现双向传输层安全协议(MTLS)?
首先,我们要为Hakky54的优秀教程鼓掌,他详细介绍了如何实现双向传输层安全协议。 https://github.com/Hakky54/mutual-tls-ssl 我按照他的教程来实现AWS Lambdas的MTLS,并且你可以在本地运行Spring-boot应用程序测试实现效果,这样可以节省很多时间。
实施步骤(所有命令都记录在上述链接中):
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();

使调用API
请发出API调用。
client.target(endpoint).get();

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


现在我无法让代码高亮显示:( 如果有人能编辑我的帖子就好了。 - dsharew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接