创建一个 AWS CloudHSM 钥匙库 - AWS Key Management Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建一个 AWS CloudHSM 钥匙库

你可以创建一个或多个 AWS CloudHSM 密钥存储在您的账户中。每个 AWS CloudHSM 密钥库与一个密钥库相关联 AWS CloudHSM 聚集在同一个地方 AWS 账户 和区域。在你创建你的 AWS CloudHSM 密钥库,你需要组装先决条件。然后,在你可以使用你的 AWS CloudHSM 密钥库,你必须将其连接到它的 AWS CloudHSM 集群。

注意

如果你尝试创建 AWS CloudHSM 密钥库的属性值与现有的已断开连接的密钥库相同 AWS CloudHSM 钥匙库, AWS KMS 不会创建新的 AWS CloudHSM 密钥存储,它不会引发异常或显示错误。相反, AWS KMS 将重复项识别为重试可能产生的结果,并返回现有的 ID AWS CloudHSM 钥匙库。

提示

你不必连接你的 AWS CloudHSM 立即存放密钥。您可以将它保持断开状态,直到您准备好使用它为止。但是,要验证它是否已正确配置,您可能需要连接它查看其连接状态,然后断开它

汇编先决条件

每个 AWS CloudHSM 密钥库由 AWS CloudHSM 集群。要创建 AWS CloudHSM 密钥库,您必须指定一个处于活动状态的密钥库 AWS CloudHSM 尚未与其他密钥库关联的集群。你还需要在集群中创建一个专用的加密用户 (CU) HSMs AWS KMS 可以用来代表您创建和管理密钥。

在创建之前 AWS CloudHSM 密钥存储,请执行以下操作:

选择一个 AWS CloudHSM cluster

每个 AWS CloudHSM 密钥库仅与一个密钥库相关联 AWS CloudHSM 集群。当你创建一个 AWS KMS keys在你的 AWS CloudHSM 钥匙库, AWS KMS 创建KMS密钥元数据,例如 ID 和 Amazon 资源名称 (ARN) AWS KMS。 然后,它会在关联集群HSMs中创建密钥材料。你可以创建一个新的 AWS CloudHSM集群或使用现有集群。 AWS KMS 不需要对集群的独占访问权限。

这些区域有: AWS CloudHSM 您选择的集群与永久关联 AWS CloudHSM 钥匙库。在你创建之后 AWS CloudHSM key store,您可以更改关联集群的集群 ID,但您指定的集群必须与原始集群共享备份历史记录。要使用不相关的集群,你需要创建一个新的集群 AWS CloudHSM 钥匙库。

这些区域有: AWS CloudHSM 您选择的集群必须具有以下特征:

  • 集群必须处于活动状态

    您必须创建集群,对其进行初始化,安装 AWS CloudHSM 适用于您的平台的客户端软件,然后激活集群。有关详细说明,请参阅入门 AWS CloudHSM中的 AWS CloudHSM 用户指南

  • 该集群必须与位于相同的账户和区域中 AWS CloudHSM 钥匙库。您无法关联 AWS CloudHSM 密钥存储在一个区域,集群位于另一个区域。要在多个区域创建密钥基础设施,您必须创建 AWS CloudHSM 每个区域的密钥库和集群。

  • 集群不能与同一账户和区域中的其他自定义密钥存储关联。每个 AWS CloudHSM 账户和区域中的密钥存储区必须与其他账户关联 AWS CloudHSM 集群。您无法指定已与自定义密钥存储关联的集群,也无法指定与关联集群共享备份历史记录的集群。共享备份历史记录的集群具有相同的集群证书。要查看集群的集群证书,请使用 AWS CloudHSM 控制台或DescribeClusters操作。

    如果你备份 AWS CloudHSM 集群到不同的区域,则将其视为不同的集群,您可以将备份与其区域中的自定义密钥存储相关联。但是,两个自定义KMS密钥存储库中的密钥不可互操作,即使它们具有相同的备用密钥。 AWS KMS 将元数据绑定到密文,因此只能通过加密密文的密钥对其进行解密。KMS

  • 必须在区域中的至少两个可用区中为集群配置私有子网。因为 AWS CloudHSM 并非所有可用区都支持,我们建议您在该区域的所有可用区中创建私有子网。您无法为现有集群重新配置子网,但可以从备份创建集群(在集群配置中具有不同的子网)。

    重要

    在你创建你的 AWS CloudHSM 密钥库,请勿删除为其配置的任何私有子网 AWS CloudHSM 集群。如果 AWS KMS 无法在群集配置中找到所有子网,尝试连接到自定义密钥库失败,出现SUBNET_NOT_FOUND连接错误状态。有关详细信息,请参阅如何修复连接故障

  • 集群的安全组 (cloudhsm-cluster-<cluster-id>-sg) 必须包含允许端口 2223-2225 上TCP流量的入站规则和出站规则。入站规则中的 Source (源) 和出站规则中的 Destination (目标) 必须匹配安全组 ID。在创建集群时,默认情况下会设置这些规则。请勿删除或更改它们。

  • 集群必须至少包含两个HSMs处于不同可用区域的活动集群。要验证数量HSMs,请使用 AWS CloudHSM 控制台或DescribeClusters操作。如有必要,您可以添加HSM

查找信任锚点证书

创建自定义密钥存储库时,必须上传的信任锚证书 AWS CloudHSM 集群到 AWS KMS. AWS KMS 需要信任锚证书才能连接 AWS CloudHSM 与其关联的密钥库 AWS CloudHSM 集群。

每位活跃者 AWS CloudHSM 集群有信任锚证书。在初始化集群时,您将生成此证书,将它保存在 customerCA.crt 文件中,并将它复制到已连接到集群的主机。

为创建kmsuser加密用户 AWS KMS

管理你的 AWS CloudHSM 钥匙库, AWS KMS 登录到选定集群中的kmsuser加密用户 (CU) 账户。在你创建你的 AWS CloudHSM 密钥库,您必须创建 kmsuser CU。然后当你创建你的 AWS CloudHSM 密钥存储区,您需要为其提供密码 kmsuser AWS KMS。 每当你连接时 AWS CloudHSM 与其关联的密钥库 AWS CloudHSM 集群, AWS KMS 以身份登录kmsuser并轮换密码 kmsuser

重要

在创建 kmsuser CU 时,请勿指定 2FA 选项。如果你这样做, AWS KMS 无法登录而你的 AWS CloudHSM 密钥库无法连接到这个 AWS CloudHSM 集群。一旦指定 2FA,便无法撤消它。相反,您必须删除 CU 并重新创建它。

注意

以下过程使用 AWS CloudHSM 客户端 SDK 5 命令行工具,Cloud HSM CLI。云取而HSMCLI代key-handle之的是key-reference

2025年1月1日, AWS CloudHSM 将终止对 Client SDK 3 命令行工具、云HSM管理实用程序 (CMU) 和密钥管理实用程序 (KMU) 的支持。有关客户端 SDK 3 命令行工具和客户端 SDK 5 命令行工具之间区别的更多信息,请参阅HSMCLI中的从客户端 SDK 3 CMU 迁移KMU到客户端 SDK 5 Cloud AWS CloudHSM 用户指南

  1. 按照 Cloud C HSM ommand Line Interface 入门 (CLI) 主题中所述的入门步骤进行操作 AWS CloudHSM 用户指南

  2. 使用用户创建命令创建名为的 CU kmsuser

    密码必须由 7 到 32 个字母数字字符组成。它区分大小写,并且不能包含任何特殊字符。

    以下示例命令创建 C kmsuser U。

    aws-cloudhsm > user create --username kmsuser --role crypto-user Enter password: Confirm password: { "error_code": 0, "data": { "username": "kmsuser", "role": "crypto-user" } }

创建一个 AWS CloudHSM 密钥库(控制台)

当你创建 AWS CloudHSM 密钥存储在 AWS Management Console,您可以在工作流程中添加和创建先决条件。但是,如果您事先已汇编这些先决条件,则此过程会更快。

  1. 登录 AWS Management Console 然后打开 AWS Key Management Service (AWS KMS) 控制台位于 https://console.aws.amazon.com/kms。

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 在导航窗格中,选择自定义密钥库AWS CloudHSM 钥匙库

  4. 选择 “创建密钥库”。

  5. 为自定义密钥存储输入友好名称。该名称在您账户的所有自定义密钥存储中必须具备唯一性。

    重要

    不要在此字段中包含机密或敏感信息。此字段可能会以纯文本形式显示在 CloudTrail 日志和其他输出中。

  6. 选择一个 AWS CloudHSM 集群用于 AWS CloudHSM 钥匙库。或者,创建一个新的 AWS CloudHSM 集群,选择 “创建” AWS CloudHSM 集群链接。

    菜单显示 AWS CloudHSM 您的账户和区域中尚未关联的集群 AWS CloudHSM 钥匙库。该集群必须满足要求(与关联自定义密钥存储相关)。

  7. 选择 “选择文件”,然后上传的信任锚证书 AWS CloudHSM 您选择的集群。这是您在初始化集群时创建的 customerCA.crt 文件。

  8. 输入您在选定集群中创建的 kmsuser 加密用户 (CU) 的密码。

  9. 选择创建

程序成功后,新的 AWS CloudHSM 密钥库出现在列表中 AWS CloudHSM 账户和地区中的密钥存储。如果该过程失败,则会显示一条错误消息,描述问题并提供有关如何解决该问题的帮助。如果您需要更多帮助,请参阅对自定义密钥存储进行故障排除

如果你尝试创建 AWS CloudHSM 密钥库的属性值与现有的已断开连接的密钥库相同 AWS CloudHSM 钥匙库, AWS KMS 不会创建新的 AWS CloudHSM 密钥存储,它不会引发异常或显示错误。相反, AWS KMS 将重复项识别为重试可能产生的结果,并返回现有的 ID AWS CloudHSM 钥匙库。

下一页:全新 AWS CloudHSM 密钥库不会自动连接。在你可以创建之前 AWS KMS keys 在 AWS CloudHSM 密钥库,您必须将自定义密钥存储与其关联的密钥库连接起来 AWS CloudHSM 集群。

创建一个 AWS CloudHSM 密钥库 (API)

您可以使用该CreateCustomKeyStore操作来创建新的 AWS CloudHSM 与关联的密钥库 AWS CloudHSM 在账户和区域中集群。这些示例使用 AWS Command Line Interface (AWS CLI),但您可以使用任何支持的编程语言。

CreateCustomKeyStore 操作需要以下参数值。

  • CustomKeyStoreName — 自定义密钥库的友好名称,在账户中是唯一的。

    重要

    不要在此字段中包含机密或敏感信息。此字段可能会以纯文本形式显示在 CloudTrail 日志和其他输出中。

  • CloudHsmClusterId — 的集群 ID AWS CloudHSM 满足要求的集群 AWS CloudHSM 钥匙库。

  • KeyStorePassword — 指定集群中 kmsuser CU 账户的密码。

  • TrustAnchorCertificate — 您在初始化集群时创建的customerCA.crt文件的内容。

以下示例使用虚构的集群 ID。在运行命令之前,请将其替换为有效的集群 ID。

$ aws kms create-custom-key-store --custom-key-store-name ExampleCloudHSMKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate <certificate-goes-here>

如果你正在使用 AWS CLI,您可以指定信任锚证书文件,而不是其内容。在下面的示例中,customerCA.crt 文件位于根目录中。

$ aws kms create-custom-key-store --custom-key-store-name ExampleCloudHSMKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate file://customerCA.crt

当此操作成功时,CreateCustomKeyStore 将返回自定义密钥存储 ID,如以下示例响应中所示。

{ "CustomKeyStoreId": cks-1234567890abcdef0 }

如果操作失败,请更正异常指示的错误,然后重试。有关其他帮助,请参阅对自定义密钥存储进行故障排除

如果你尝试创建 AWS CloudHSM 密钥库的属性值与现有的已断开连接的密钥库相同 AWS CloudHSM 钥匙库, AWS KMS 不会创建新的 AWS CloudHSM 密钥存储,它不会引发异常或显示错误。相反, AWS KMS 将重复项识别为重试可能产生的结果,并返回现有的 ID AWS CloudHSM 钥匙库。

下一页:要使用 AWS CloudHSM 密钥库,将其连接到它的 AWS CloudHSM 集群