簡體   English   中英

如何將客戶端證書/密鑰從 Node.JS AWS Lambda 傳遞到安全的私有 REST API?

[英]How to pass a client certificate/key from Node.JS AWS Lambda to a secure private REST API?

我對 AWS 服務非常陌生,但我的任務是向 REST API 提出請求,該請求由 2 路 SSL 證書和密鑰文件(傳遞 a 作為端點.KEY 證書)保護的通話。 我已經使用 curl 成功調用了該服務並傳遞了這些,但我很難將相同的邏輯應用於 Lambda。 我有一個 Lambda 工作,我正在調用一個公共 API,通過 AWS API 網關觸發它,我想修改它以進行安全調用。

有人做過嗎? CRT/KEY 文件應該存儲在哪里? 他們將如何引入並被調用並添加到 rest 調用中? 有沒有人可以分享一個例子?

非常歡迎就這些問題提出建議。 先感謝您。

我使用 AWS Secrets Manager 將我的證書公鑰和私鑰存儲為文本。 我將證書轉換為 PEM 文件並在文本文件中打開它以獲取內容,然后復制私鑰文本並將它們一起粘貼到一個文件中(格式見答案底部)。

您可以從 Secrets Manager 中獲取證書值,然后將證書作為 API 調用的一部分傳遞,具體取決於您使用的 REST 庫。 對於 axios,您可以將證書文本附加到httpsAgent ,如下所示:

const axiosConfig = {
  url,
  method,
  params,
  data,
  headers,
  httpsAgent = new https.Agent({
    cert: 'Cert Text',
    certType: 'perm',
    key: 'Cert Key',
    passphrase: 'Cert Password'
  })
}

const instance = axios.create()

const response = await instance(axiosConfig)

就我而言,我在證書文本中包含了公鑰和私鑰,包括完整的鏈,並將相同的值傳遞給上面的certkey 這可能不是正確的方法,但它對我有用。 我的證書文本如下所示:

-----BEGIN ENCRYPTED PRIVATE KEY-----
abcdefghijk12345
...
-----END ENCRYPTED PRIVATE KEY-----
subject=CN=***, OU=***, O=***, C=**
issuer=****, OU=***, O=***, C=**
-----BEGIN CERTIFICATE-----
abcdefghijk12345
...
-----END CERTIFICATE-----
subject=CN=***, OU=***, O=***, C=**
issuer=****, OU=***, O=***, C=**
-----BEGIN CERTIFICATE-----
abcdefghijk12345
...
-----END CERTIFICATE-----

暫無
暫無

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

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