Jos*_*ard 16 amazon-web-services aws-cli aws-secrets-manager
编辑:截至 2020 年 2 月,AWS 似乎已修复此错误。不再需要 BASE64ing 和其他明智的选择。
我将我的秘密存储为字符串,但当然,当 aws 存储秘密时,它会删除空格和换行符。最重要的是,它将值包装在 json 中。
当我运行aws secretsmanager get-secret-value --secret-id my-private-key > private.pem它返回类似的东西。
{
"Name": "ai-data-devops-ansible-deploy-key",
"VersionId": "fedafe24-d3eb-4964-9a8f-7f4ecb375a35",
"SecretString": "-----BEGIN RSA PRIVATE KEY-----\nasdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=\n-----END RSA PRIVATE KEY-----\n",
"VersionStages": [
"AWSCURRENT"
],
"CreatedDate": 1568147513.11,
"ARN": "arn:aws:secretsmanager:us-east-1:13726472r4:secret:my-private-key-XQuwafs"
}
Run Code Online (Sandbox Code Playgroud)
所以我需要:
-----BEGIN RSA PRIVATE KEY-----
asdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
Jas*_*ele 24
另一种选择是对 PEM 进行 base64 编码以进行存储:
对密钥进行编码:
$ cat private_key
-----BEGIN RSA PRIVATE KEY-----
asdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=
-----END RSA PRIVATE KEY-----
$ base64 private_key > encoded_private_key
$ cat encoded_private_key
LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQphc2RrbW5hc2Vma2xqenNka2ZmanNsZGtnZmpsemttc2RmbGtOT1RBUkVBTEtFWWFzZGRram5zZmRsenhkZnZsa21kZ2dvPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
Run Code Online (Sandbox Code Playgroud)
取回钥匙:
$ base64 -D encoded_private_key
-----BEGIN RSA PRIVATE KEY-----
asdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
编辑:假设秘密是 base64 编码的,这将起作用:
编码和推送:
aws secretsmanager create-secret --name my-private-key --secret-string `base64 private.pem`
Run Code Online (Sandbox Code Playgroud)
拉取和解码:
aws secretsmanager get-secret-value --secret-id my-private-key --query 'SecretString' --output text |base64 -D > private.pem
Run Code Online (Sandbox Code Playgroud)
执行 --query --output text 操作可能会使解析更简单,即使您也不想对它进行 base64 编码。
小智 9
我想出了一个解决方案,利用将秘密以纯文本形式存储在秘密管理器中。
使用 cli 以纯文本形式获取秘密输出。现在文本中的 \n 和 \s 将被转换为它们应该是的换行符和空格
aws secretsmanager get-secret-value --secret-id privatekey --query
'SecretString' --output text > private.pem
Run Code Online (Sandbox Code Playgroud)pem 文件现在将被正确格式化
-----BEGIN RSA PRIVATE KEY-----
MIIG3DCCBM
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12892 次 |
| 最近记录: |