如何将我的密钥导入 AWS Key Management Service?

2 分钟阅读
0

我想将我的密钥材料导入 AWS Key Management Service (AWS KMS),这样我就可以在 AWS 服务中使用 256 位对称密钥。

解决方法

AWS KMS 允许您将密钥材料导入 AWS KMS 密钥中。然后,您可以将此密钥用于 AWS KMS 支持的 AWS 服务
请按照以下步骤将您的密钥材料导入 AWS KMS。
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI

  1. 创建一个没有密钥材料的 AWS KMS 密钥并记下您的 AWS KMS 密钥的 ID。
    注意:对于定义密钥管理权限定义密钥使用权限,最佳实践是将密钥管理员和密钥角色分开。这样可以限制在发生凭证泄露时所带来的影响。

  2. 在安装了 OpenSSL 的本地计算机或 Amazon Elastic Compute Cloud (Amazon EC2) 实例上打开终端。

  3. 要生成 256 位对称密钥,请运行以下命令:

    openssl rand -out PlaintextKeyMaterial.bin 32
  4. 要描述密钥并获取导入的参数,请运行以下 AWS 命令行界面(AWS CLI)命令:
    **注意:**这些命令会将公有密钥和导入令牌参数存入变量。​

    export KEY=`aws kms --region eu-west-2 get-parameters-for-import --key-id example1-2345-67ab-9123-456789abcdef --wrapping-algorithm RSAES_OAEP_SHA_256 --wrapping-key-spec RSA_2048 --query '{Key:PublicKey,Token:ImportToken}' --output text`
  5. 要将公有密钥和导入令牌置于单独的 Base64 编码文件中,请运行以下命令:

    echo $KEY | awk '{print $1}' > PublicKey.b64echo $KEY | awk '{print $2}' > ImportToken.b64
  6. 要将 base64 编码文件转换为要导入的二进制文件,请运行以下命令:

    openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.binopenssl enc -d -base64 -A -in ImportToken.b64 -out ImportToken.bin
  7. 要使用已转换为二进制文件的公有密钥加密密钥材料,请运行以下命令:

    openssl pkeyutl -in PlaintextKeyMaterial.bin -out EncryptedKeyMaterial.bin -inkey PublicKey.bin -keyform DER -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
  8. 要将加密的密钥材料导入 AWS KMS,请运行以下命令:
    **注意:**此示例指定密钥材料不会过期,但您也可以为密钥材料设置过期日期。有关详细信息,请参阅 ExpirationModel

    aws kms --region eu-west-2 import-key-material --key-id example1-2345-67ab-9123-456789abcdef --encrypted-key-material fileb://EncryptedKeyMaterial.bin --import-token fileb://ImportToken.bin --expiration-model KEY_MATERIAL_DOES_NOT_EXPIRE
  9. 验证导入的密钥状态是否设置为已启用。为此,请在 AWS KMS 控制台中检查该密钥,或运行 DescribeKey API 操作。

如果无法导入密钥,请根据您的用例执行以下步骤:

  • 您等待的时间超过 24 小时,导入令牌已过期。再次下载包装密钥和导入令牌来重新加密密钥材料可解决此问题。
  • 您的密钥材料不是 256 位对称密钥。要解决此问题,请确认加密密钥材料的文件大小为 32 字节。请运行以下命令之一以检查文件大小:

Linux

wc -c <filename>.bin

Windows

有关详细信息,请参阅 Importing key material for AWS KMS keys

dir <filename>.bin

相关信息

我在使用 OpenSSL 将我的密钥导入 AWS KMS 时收到“InvalidCiphertext”错误。如何解决此问题?

AWS 官方
AWS 官方已更新 4 个月前