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

时间:2017-03-06 06:31:00

标签: java amazon-web-services ssl lambda mutual-authentication

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

  • 通过POST获取(文本)输入,
  • 执行小字符串操作+
  • 将受控值存储到DynamoDB中,然后
  • 通过HTTP POST
  • 将相同(受操纵的)值发送到特定URL

看起来像一个简单的lambda教程示例,但对我来说棘手的部分是授权。我必须POST到的URL只允许通过SSL证书进行相互身份验证的请求。我怎样才能在Lambda中实现这一目标?

我找不到足够的答案来完成这项工作。我查看了使用AWS API网关2路ssl证书选项。但是,为了实现这一点,我需要将接收部件证书安装到证书库中。甚至可能吗?或者唯一的方法是使用micro-EC2盒子?

在Lambda,我可以使用Node.JS,Java或Python。

1 个答案:

答案 0 :(得分:0)

如何在AWS Lambda中实施双向TLS?

Hakky54的第一个大掌声,是有关TLS的良好教程。 https://github.com/Hakky54/mutual-tls-ssl

我按照他的教程来理解和实现AWS Lambdas的MTLS。您还可以通过只运行springboot应用程序在部署到AWS之前在本地测试您的实现,从而节省大量时间。

步骤(以上链接中记录了所有命令)

  1. 导出服务器证书并将其导入到客户端信任存储区

  2. 加载您的客户端密钥存储和信任存储,我都保存在s3存储桶中

  3. 创建TLS上下文

    SSLContext sslContext = SSLContexts.custom() .loadKeyMaterial(keyStore, stores.getKeyStorePassword()。toCharArray()) .loadTrustMaterial(trustStore), (X509Certificate []链,字符串authType)-> true) .build();

  4. 创建新的新泽西州客户端

    client = ClientBuilder.newBuilder()
    .withConfig(new ClientConfig())
    .sslContext(sslContext.get())
    .trustStore(信任商店) .keyStore(keyStore,keyStorePassword)
    .build();

  5. 调用API

    client.target(endpoint).get();

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