编辑:截至2020年2月,似乎已经修复了这个错误。不再需要BASE64ing和其他wise。
我将秘密存储为字符串,但当然,当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"
}所以我需要:
从json
-----BEGIN RSA PRIVATE KEY-----
asdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=
-----END RSA PRIVATE KEY-----发布于 2020-01-06 20:34:41
我想出了一种解决方案,将秘密存储在秘密管理器中作为纯文本。
保密管理器获取秘密值秘密id私钥查询'SecretString‘输出文本> private.pem
现在将正确格式化pem文件。
-----BEGIN RSA PRIVATE KEY-----
MIIG3DCCBM
-----END RSA PRIVATE KEY-----发布于 2019-11-07 16:06:25
另一种选择是对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=把钥匙拿回来:
$ base64 -D encoded_private_key
-----BEGIN RSA PRIVATE KEY-----
asdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=
-----END RSA PRIVATE KEY-----编辑:假设秘密是base64编码的,这将有效:
编码和推送:
aws secretsmanager create-secret --name my-private-key --secret-string `base64 private.pem`拉出和解码:
aws secretsmanager get-secret-value --secret-id my-private-key --query 'SecretString' --output text |base64 -D > private.pem执行--查询输出文本的操作可能会使解析变得更简单,即使您也不希望base64对其进行编码。
发布于 2019-10-17 15:37:37
您需要通过几个步骤完成输出。
要返回来自json的密钥的值,使用jq ".SecretString"
cut -b 2- |tr -d '"' |sed -En "s/\\\n/\n/pg"这将返回你想要的。
还请注意,您希望使private.pem成为只读的。(chmod 400 private.pem)
总之,完整的命令如下所示:
aws secretsmanager get-secret-value --secret-id my-private-key | jq ".SecretString" |cut -b 2- |tr -d '"' |sed -En "s/\\\n/\n/pg" > private.pemhttps://stackoverflow.com/questions/58436229
复制相似问题