导入密钥材料步骤 2:下载公有密钥和导入令牌 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

导入密钥材料步骤 2:下载公有密钥和导入令牌

创建不带密钥材料的对称加密 Amazon KMS key 后,下载该 KMS 密钥的公有密钥和导入令牌。您需要这些项目才能导入密钥材料。您可使用 Amazon Web Services Management Console或 Amazon KMS API 通过一个步骤下载这两个项目。

当您希望将相同的密钥材料重新导入 KMS 密钥中时,您也需要下载这些项目。您可以执行此操作来更改密钥材料的过期时间,或者恢复过期或删除的密钥材料。

使用公有密钥

导入密钥材料时,不要将原始密钥材料上传至 Amazon KMS。您必须先使用在此步骤中下载的公有密钥对密钥材料进行加密,然后将已加密的密钥材料上传至 Amazon KMS。当 Amazon KMS 收到您的加密的密钥材料时,它会使用相应的私有密钥对其进行解密。您从 Amazon KMS 收到的公有密钥是一个 2048 位的 RSA 公有密钥,并且它对您的 Amazon Web Services 账户 来说始终是唯一的。

使用导入令牌

导入令牌包含元数据,以确保您的密钥材料导入正确。当您将加密的密钥材料上传至 Amazon KMS 时,您必须上传在此步骤中下载的同一导入令牌。

选择包装算法

要在导入过程中保护您的密钥材料,请使用包装密钥和包装算法为其加密。通常,选择硬件安全模块 (HSM) 支持的算法或用于保护密钥材料的密钥管理系统。您必须使用 RSA PKCS # 1 加密方案以及三种填充选项之一 (如下所示)。这些选项按 Amazon 首选项的顺序排列。由这些选项表示的方案的技术详细信息位于 PKCS # 1 版本 2.1 标准的第 7 部分中。

  • RSAES_OAEP_SHA_256 –RSA 加密算法,使用最优非对称加密填充 (OAEP) 与 SHA-256 哈希函数。

  • RSAES_OAEP_SHA_1 – RSA RSA 加密算法,使用最优非对称加密填充 (OAEP) 与 SHA-1 哈希函数。

  • RSAES_PKCS1_V1_5 – RSA 加密算法,使用在 PKCS #1 版本 1.5 中定义的填充格式。

注意

如果您计划尝试使用 OpenSSL 为密钥材料加密概念验证示例 (在步骤 3 中),请使用 RSAES_OAEP_SHA_1。

如果您的 HSM 或密钥管理系统支持,我们建议使用 RSAES_OAEP_SHA_256 来为您的密钥材料加密。如果该选项不可用,则应使用 RSAES_OAEP_SHA_1。如果两个 OAEP 选项均不可用,则必须使用 RSAES_PKCS1_V1_5。有关如何为您的密钥材料加密的信息,请参阅关于硬件安全模块或用于保护密钥材料的密钥管理系统的文档。

公有密钥和导入令牌的有效期为 24 小时。如果您不在 24 小时的下载期限内使用它们导入密钥材料,则必须下载新的公有密钥和令牌。

要下载公有密钥和导入令牌,您可以使用 Amazon Web Services Management Console或 Amazon KMS API。您也可以通过发出 HTTP 请求,或使用 Amazon 开发工具包Amazon Command Line InterfaceAmazon Tools for PowerShell 直接使用 API。

下载公有密钥和导入令牌时,GetParametersForImport 条目将添加到您的 Amazon CloudTrail 日志中以记录 GetParametersForImport 操作。无论您使用 Amazon KMS 控制台还是 Amazon KMS API,CloudTrail 条目都是相同的。

下载公有密钥和导入令牌(控制台)

您可以使用 Amazon Web Services Management Console下载公有密钥和导入令牌。

  1. 如果您刚刚完成创建不带密钥材料的 KMS 密钥的步骤并且您位于 Download wrapping key and import token(下载包装密钥和导入令牌)页面上,请跳至 步骤 8

  2. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Key Management Service (Amazon KMS) 控制台:https://console.aws.amazon.com/kms

  3. 要更改 Amazon Web Services 区域,请使用页面右上角的区域选择器。

  4. 在导航窗格中,选择客户托管密钥

    提示

    只能将密钥材料导入 Origin(源)为 EXTERNAL 的对称加密 KMS 密钥中。这指示已创建不带密钥材料的 KMS 密钥。要向表中添加 Origin (源) 列,请在页面右上角,选择设置图标 ( )。打开 Origin (源),然后选择 Confirm (确认)

  5. 选择待导入的 KMS 密钥的别名或密钥 ID。

  6. 选择 Cryptographic configuration(加密配置)选项卡并查看其值。这些选项卡在 General configuration(常规配置)部分下。

    只能将密钥材料导入 Key type(密钥类型)为 Symmetric(对称)且 Origin(源)为 EXTERNAL 的 KMS 密钥中。有关创建带已导入密钥材料的 KMS 密钥的信息,请参阅 导入 Amazon KMS 密钥中的密钥材料

  7. 选择 Key material(密钥材料)选项卡,然后选择 Download wrapping key and import token(下载包装密钥和导入令牌)。

    Key material(密钥材料)选项卡仅针对 Origin(源)值为 EXTERNAL 的对称加密 KMS 密钥显示。

  8. 对于选择包装算法,请选择您将用于为密钥材料加密的选项。有关这些选项的详细信息,请参阅选择包装算法

    如果您计划尝试使用 OpenSSL 为密钥材料加密概念验证示例 (在步骤 3 中),请选择 RSAES_OAEP_SHA_1。

  9. 选择下载包装密钥和导入令牌,然后保存文件。

    如果有 Next (下一步) 选项,而且要立即继续执行此过程,请选择 Next (下一步)。要稍后再继续,请选择 Cancel (取消)。否则,要关闭窗口,请选择 Cancel (取消) 或单击 X

  10. 解压缩 .zip 文件,即您在上一步 (ImportParameters.zip) 中保存的文件。

    此文件夹包含以下文件:

    • 包装密钥(公有密钥)位于名为 wrappingKey_KMS key_key_ID_timestamp(例如 wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909)的文件中。这是一个 2048 位的 RSA 公有密钥。

    • 导入令牌,位于名为 importToken_KMS key_key_ID_timestamp(例如 importToken_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909)的文件中。

    • 名为 README_KMS key_key_ID_timestamp.txt(例如 README_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909.txt)的文本文件。此文件包含以下相关信息:包装密钥 (公有密钥)、用于为密钥材料加密的包装算法,以及包装密钥 (公有密钥) 和导入令牌的过期日期和时间。

  11. 要继续执行此过程,请参阅为您的密钥材料加密

下载公有密钥和导入令牌 (Amazon KMS API)

要使用 Amazon KMS API 来下载公有密钥和导入令牌,请发送 GetParametersForImport 请求以指定要为其下载这些项目的 KMS 密钥。以下示例说明如何使用 Amazon CLI 执行该操作。

此示例将 RSAES_OAEP_SHA_1 指定为加密选项。要指定另一个选项,请将 RSAES_OAEP_SHA_1 替换为 RSAES_OAEP_SHA_256RSAES_PKCS1_V1_5。将 1234abcd-12ab-34cd-56ef-1234567890ab 替换为为其下载公有密钥和导入令牌的 KMS 密钥的密钥 ID。在该操作中,您可以使用 KMS 密钥的密钥 ID 或 Amazon Resource Name (ARN),但不能使用别名。

注意

如果您计划尝试使用 OpenSSL 为密钥材料加密概念验证示例 (在步骤 3 中),请指定 RSAES_OAEP_SHA_1。

$ aws kms get-parameters-for-import --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --wrapping-algorithm RSAES_OAEP_SHA_1 \ --wrapping-key-spec RSA_2048

该命令成功执行后,您会看到类似以下内容的输出:

{ "ParametersValidTo": 1568290320.0, "PublicKey": "public key base64 encoded data", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "ImportToken": "import token base64 encoded data" }

收到此输出后,将 base64 编码的公有密钥和导入令牌保存在单独的文件中。然后,对每个文件进行 base64 解码以生成二进制数据,并将二进制数据保存在新文件中。这样做的目的是为后续步骤准备这些项目。请参阅以下 示例。

为后续步骤准备公有密钥和导入令牌

  1. 复制公有密钥的 base64 编码的数据 (由示例输出中公有密钥 base64 编码的数据表示),将其粘贴到新文件中,然后保存文件。为文件指定一个描述性名称,例如 PublicKey.b64

  2. 使用 OpenSSL 对文件的内容进行 base64 解码,然后将解码后的数据保存到一个新文件中。以下示例会对您在上一步骤 (PublicKey.b64) 中保存的文件中的数据进行解码,并将输出保存到一个名为 PublicKey.bin 的新文件中。

    $ openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin

对导入令牌重复执行上述两个步骤,然后执行步骤 3:加密密钥材料