aws-encryption-cli:在加密过程中设置配置文件时如何解密?

时间:2019-09-05 11:47:59

标签: aws-kms

我在KMS中有一个密钥,我想用它在shell脚本中解密。我已经安装了 aws-encryption-cli https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/crypto-cli.html)。

hello world示例在我创建了kms-key(其arn存储在变量$dev_key_arn中)的开发环境中运行良好。

> echo 'Hello World' | aws-encryption-cli --encrypt --master-keys key=$dev_key_arn --input - --output - --encode -S | aws-encryption-cli --decrypt  --input - --output - --decode -S
Hello World

我也有一个生产环境,因此我想使用kms键$prod_key_arn。我在名为prod的配置文件中有有效的AWS凭证,所以我希望

> echo 'Hello World' | aws-encryption-cli --encrypt --master-keys key=$prod_key_arn profile=prod region=eu-west-1   --input - --output - --encode -S | aws-encryption-cli --decrypt  --input - --output - --decode -S
Encountered unexpected error: increase verbosity to see details.
DecryptKeyError("Unable to decrypt any data key")

但是它失败并显示以上消息。如果检查加密的邮件,我发现它已成功加密了邮件

> aws-encryption-cli --encrypt --master-keys key=arn:aws:kms:eu-west-1:953495156568:key/2197020f-5b3c-4d05-bffc-04cf6114e405 profile=prod region=eu-west-1 provider=aws-kms  --input /tmp/prod_key --output - --encode -S
AYADePCKfZUuL<....>iza1AU=

密钥的密钥存储在加密的材料中(base64解码显示该密钥)。但是有关个人资料的信息在哪里?解码时不能将其作为参数传递,并且似乎不是已编码材料的一部分。

1 个答案:

答案 0 :(得分:1)

aws-encryption-cli作者在这里。 :)

您遇到的问题是,在您的crypto命令中,您将配置文件设置为“ prod”,但是在您的解密命令中,您没有设置配置文件,因此它使用的是默认配置文件。

aws-encryption-cli --decrypt  --input - --output - --decode -S

如果您添加一个主键定义来标识要使用的配置文件,它应该可以工作。

aws-encryption-cli --decrypt --master-keys provider=aws-kms profile=prod  --input - --output - --decode -S

因为如果您未指定名称,我们默认使用aws-kms提供程序,因此只需指定配置文件也可以,但是我更喜欢识别提供程序,因为这样可以使意图更清晰。

aws-encryption-cli --decrypt --master-keys profile=prod  --input - --output - --decode -S

如果您遇到aws-encryption-cli的任何其他问题,请随时在我们的GitHub存储库[1]中打开一个问题。

[1] https://github.com/aws/aws-encryption-sdk-cli