簡體   English   中英

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-way ssl 證書選項。 但是,為此,我需要將接收部分證書安裝到證書存儲中。 甚至可能嗎? 還是唯一的方法是使用微型 EC2 盒子?

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

如何在 AWS Lambda 中實現雙向 TLS?

Hakky54 這個關於雙向 TLS 的好教程的第一個熱烈掌聲。 https://github.com/Hakky54/mutual-tls-ssl

我按照他的教程來理解和實施適用於 AWS Lambda 的 MTLS。 您還可以在部署到 AWS 之前在本地測試您的實現,只需運行 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();
  1. 調用 API
client.target(endpoint).get();

我將我的密鑰庫憑據存儲在參數存儲中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM