[英]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)
就我而言,我在證書文本中包含了公鑰和私鑰,包括完整的鏈,並將相同的值傳遞給上面的cert
和key
。 這可能不是正確的方法,但它對我有用。 我的證書文本如下所示:
-----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.