

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

# 创建密 AWS CloudHSM 钥库
<a name="create-keystore"></a>

您可以在自己的账户中创建一个或多个 AWS CloudHSM 密钥库。每个 AWS CloudHSM 密钥库都与同一个 AWS 账户 和区域中的一个 AWS CloudHSM 集群相关联。在创建 AWS CloudHSM 密钥存储之前，您需要[汇编先决条件](#before-keystore)。然后，在使用 AWS CloudHSM 密钥库之前，必须[将其连接到](connect-keystore.md)其 AWS CloudHSM 集群。

**注意**  
KMS 无法 IPv6 与 AWS CloudHSM 密钥存储库进行通信。  
如果您尝试创建与现有*已断开连接*的 AWS CloudHSM 密钥存储具有相同属性值的 AWS CloudHSM 密钥存储库，则 AWS KMS 不会创建新的 AWS CloudHSM 密钥存储，也不会引发异常或显示错误。相反，它会将重复 AWS KMS 识别为重试可能产生的结果，并返回现有 AWS CloudHSM 密钥库的 ID。  
您不必立即连接 AWS CloudHSM 密钥库。您可以将它保持断开状态，直到您准备好使用它为止。但是，要验证它是否已正确配置，您可能需要[连接它](connect-keystore.md)，[查看其连接状态](view-keystore.md)，然后[断开它](disconnect-keystore.md)。

**Topics**
+ [汇编先决条件](#before-keystore)
+ [创建新的 AWS CloudHSM 密钥库](#create-hsm-keystore)

## 汇编先决条件
<a name="before-keystore"></a>

每个 AWS CloudHSM 密钥库都由一个 AWS CloudHSM 集群提供支持。要创建 AWS CloudHSM 密钥存储库，必须指定尚未与其他密钥库关联的活动 AWS CloudHSM 集群。您还需要在集群中创建一个专用的加密用户 (CU) HSMs ，该用户 AWS KMS 可用于代表您创建和管理密钥。

在创建 AWS CloudHSM 密钥库之前，请执行以下操作：

**选择一个 AWS CloudHSM 集群**  
每个 AWS CloudHSM 密钥库[恰好与一个 AWS CloudHSM 集群相关联](keystore-cloudhsm.md#concept-cluster)。当您在 AWS CloudHSM 密钥存储 AWS KMS keys 中创建时， AWS KMS 会在中创建 KMS 密钥元数据，例如 ID 和 Amazon 资源名称 (ARN)。 AWS KMS然后，它会在关联集群 HSMs 中创建密钥材料。您可以[创建新 AWS CloudHSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/getting-started.html)集群或使用现有集群。 AWS KMS 不需要对集群的独占访问权限。  
您选择的 AWS CloudHSM 集群与 AWS CloudHSM 密钥库永久关联。创建 AWS CloudHSM 密钥库后，您可以[更改关联集群的集群 ID](update-keystore.md)，但您指定的集群必须与原始集群共享备份历史记录。要使用不相关的集群，您需要创建一个新的 AWS CloudHSM 密钥库。  
您选择的 AWS CloudHSM 集群必须具有以下特征：  
+ **集群必须处于活动状态**。

  您必须创建集群，对其进行初始化，安装适用于您的平台的 AWS CloudHSM 客户端软件，然后激活集群。有关详细说明，请参阅《AWS CloudHSM User Guide》**中的 [Getting started with AWS CloudHSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/getting-started.html)。
+ **未启用双向 TLS（mTLS）。**

  KMS 不支持将 mTLS 用于集群。务必不要启用此设置。
+ **集群必须与 AWS CloudHSM 密钥库位于同一个账户和区域**中。您不能将一个区域中的 AWS CloudHSM 密钥存储库与另一个区域的集群相关联。要在多个区域创建密钥基础设施，您必须在每个区域中创建 AWS CloudHSM 密钥存储和集群。
+ **集群不能与同一账户和区域中的其他自定义密钥存储关联**。账户和区域中的每个 AWS CloudHSM 密钥存储区都必须与不同的集 AWS CloudHSM 群相关联。您无法指定已与自定义密钥存储关联的集群，也无法指定与关联集群共享备份历史记录的集群。共享备份历史记录的集群具有相同的集群证书。要查看集群的集群证书，请使用 AWS CloudHSM 控制台或[DescribeClusters](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html)操作。

  如果您[将 AWS CloudHSM 集群备份到不同的区域](https://docs.aws.amazon.com/cloudhsm/latest/userguide/copy-backup-to-region.html)，则它将被视为一个不同的集群，并且您可以将备份关联到其区域中的自定义密钥存储。但是，两个自定义密钥存储库中的 KMS 密钥不可互操作，即使它们具有相同的支持密钥。 AWS KMS 将元数据绑定到密文，因此只能通过加密密文的 KMS 密钥对其进行解密。
+ 必须在区域中的**至少两个可用区**中为集群配置[私有子网](https://docs.aws.amazon.com/cloudhsm/latest/userguide/create-subnets.html)。由于 AWS CloudHSM 并非所有可用区都支持私有子网，因此我们建议您在该区域的所有可用区中创建私有子网。您无法为现有集群重新配置子网，但可以[从备份创建集群](https://docs.aws.amazon.com/cloudhsm/latest/userguide/create-cluster-from-backup.html)（在集群配置中具有不同的子网）。
**重要**  
创建 AWS CloudHSM 密钥库后，请勿删除为其 AWS CloudHSM 集群配置的任何私有子网。如果在群集配置中找 AWS KMS 不到所有子网，则尝试[连接到自定义密钥库会](connect-keystore.md)失败，并显示`SUBNET_NOT_FOUND`连接错误状态。有关更多信息，请参阅 [如何修复连接故障](fix-keystore.md#fix-keystore-failed)。
+ [集群的安全组](https://docs.aws.amazon.com/cloudhsm/latest/userguide/configure-sg.html) (`cloudhsm-cluster-<cluster-id>-sg`) 必须包含允许端口 2223-2225 上的 TCP 流量的入站规则和出站规则。 IPv4入站规则中的 **Source (源)** 和出站规则中的 **Destination (目标)** 必须匹配安全组 ID。在创建集群时，默认情况下会设置这些规则。请勿删除或更改它们。
+ **集群必须至少包含两个 HSMs处于**不同可用区域的活动集群。要验证数量 HSMs，请使用 AWS CloudHSM 控制台或[DescribeClusters](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html)操作。如有必要，您可以[添加 HSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/add-remove-hsm.html#add-hsm)。

**查找信任锚点证书**  
创建自定义密钥存储库时，必须将 AWS CloudHSM 集群的信任锚证书上传到 AWS KMS。 AWS KMS 需要信任锚证书才能将 AWS CloudHSM 密钥库连接到其关联的 AWS CloudHSM 集群。  
每个活动 AWS CloudHSM 集群都有一个*信任锚证书*。在[初始化集群](https://docs.aws.amazon.com/cloudhsm/latest/userguide/initialize-cluster.html#sign-csr)时，您将生成此证书，将它保存在 `customerCA.crt` 文件中，并将它复制到已连接到集群的主机。

**为创建`kmsuser`加密用户 AWS KMS**  <a name="kmsuser-concept"></a>
要管理您的 AWS CloudHSM 密钥存储，请 AWS KMS 登录选定集群中的[`kmsuser`加密用户](keystore-cloudhsm.md#concept-kmsuser) (CU) 账户。在创建 AWS CloudHSM 密钥库之前，必须创建 C `kmsuser` U。然后，在创建 AWS CloudHSM 密钥库时，您需要为提供密码 AWS KMS。`kmsuser`每当您将 AWS CloudHSM 密钥库连接到其关联 AWS CloudHSM 集群时，都要以身份 AWS KMS 登录`kmsuser`并轮换密码 `kmsuser`   
在创建 `kmsuser` CU 时，请勿指定 `2FA` 选项。如果这样做，则 AWS KMS 无法登录，您的 AWS CloudHSM 密钥库也无法连接到此 AWS CloudHSM 集群。一旦指定 2FA，便无法撤消它。相反，您必须删除 CU 并重新创建它。
**注意**  
以下过程使用 AWS CloudHSM 客户端 SDK 5 命令行工具 [CloudHSM C](https://docs.aws.amazon.com/cloudhsm/latest/userguide/cloudhsm_cli.html) LI。CloudHSM CLI 将 `key-handle` 替换为 `key-reference`。  
2025 年 1 月 1 日， AWS CloudHSM 将终止对客户端 SDK 3 命令行工具、CloudHSM 管理实用程序 (CMU) 和密钥管理实用程序 (KMU) 的支持。有关客户端 SDK 3 命令行工具和客户端 SDK 5 命令行工具之间区别的更多信息，请参阅《AWS CloudHSM 用户指南》**中的[从客户端 SDK 3 CMU 和 KMU 迁移到客户端 SDK 5 CloudHSM CLI](https://docs.aws.amazon.com/cloudhsm/latest/userguide/cloudhsm_cli-migrate-from-kmu-cmu.html)。

1. 按照《AWS CloudHSM 用户指南》**的[开始使用 CloudHSM 命令行界面（CLI）](https://docs.aws.amazon.com/cloudhsm/latest/userguide/cloudhsm_cli-getting-started.html)主题中所述的入门步骤进行操作。

1. 使用 [https://docs.aws.amazon.com/cloudhsm/latest/userguide/create-user-cloudhsm-cli.html](https://docs.aws.amazon.com/cloudhsm/latest/userguide/create-user-cloudhsm-cli.html) 命令创建名为 `kmsuser` 的 CU。

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

   以下示例命令创建了一个 `kmsuser` CU。

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

## 创建新的 AWS CloudHSM 密钥库
<a name="create-hsm-keystore"></a>

[组装完先决条件](#before-keystore)后，可以在 AWS KMS 控制台中或使用[CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html)操作创建新的 AWS CloudHSM 密钥存储库。

### 使用控制 AWS KMS 台
<a name="create-keystore-console"></a>

在中创建 AWS CloudHSM 密钥库时 AWS 管理控制台，可以在工作流程中添加和创建[先决条件](#before-keystore)。但是，如果您事先已汇编这些先决条件，则此过程会更快。

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/km](https://console.aws.amazon.com/kms) s 处打开 AWS Key Management Service (AWS KMS) 控制台。

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

1. 在导航窗格中，选择**自定义密钥存储**、**AWS CloudHSM 密钥存储**。

1. 选择**创建密钥存储**。

1. 为自定义密钥存储输入友好名称。该名称在您账户的所有自定义密钥存储中必须具备唯一性。
**重要**  
不要在此字段中包含机密或敏感信息。此字段可能会以纯文本形式显示在 CloudTrail 日志和其他输出中。

1. 为 AWS CloudHSM 密钥库选择[一个 AWS CloudHSM 集群](keystore-cloudhsm.md#concept-cluster)。或者，要创建新 AWS CloudHSM 集群，请选择**创建 AWS CloudHSM 集群**链接。

   该菜单显示您的账户和地区中尚未与 AWS CloudHSM 密钥库关联的 AWS CloudHSM 集群。该集群必须[满足要求](#before-keystore)（与关联自定义密钥存储相关）。

1. 选择 **“选择文件”**，然后上传所选 AWS CloudHSM 集群的信任锚证书。这是您在[初始化集群](https://docs.aws.amazon.com/cloudhsm/latest/userguide/initialize-cluster.html#sign-csr)时创建的 `customerCA.crt` 文件。

1. 输入您在选定集群中创建的 [`kmsuser` 加密用户](keystore-cloudhsm.md#concept-kmsuser) (CU) 的密码。

1. 选择**创建**。

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

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

**下一步**：新的 AWS CloudHSM 密钥库不会自动连接。在 AWS CloudHSM 密钥库 AWS KMS keys 中创建之前，必须先将[自定义密钥库连接到](connect-keystore.md)其关联的 AWS CloudHSM 集群。

### 使用 AWS KMS API
<a name="create-keystore-api"></a>

您可以使用该[CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html)操作来创建与账户和区域中的 AWS CloudHSM 集群关联的新 AWS CloudHSM 密钥库。这些示例使用 AWS Command Line Interface (AWS CLI)，但您可以使用任何受支持的编程语言。

`CreateCustomKeyStore` 操作需要以下参数值。
+ CustomKeyStoreName — 自定义密钥库的友好名称，在账户中是唯一的。
**重要**  
不要在此字段中包含机密或敏感信息。此字段可能会以纯文本形式显示在 CloudTrail 日志和其他输出中。
+ CloudHsmClusterId — [满足 AWS CloudHSM 密钥存储要求的 AWS CloudHSM 集群的](#before-keystore)集群 ID。
+ KeyStorePassword — 指定集群中 `kmsuser` CU 账户的密码。
+ TrustAnchorCertificate — 您在[初始化集群时创建的`customerCA.crt`](https://docs.aws.amazon.com/cloudhsm/latest/userguide/initialize-cluster.html)文件的内容。

以下示例使用虚构的集群 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
}
```

如果操作失败，请更正异常指示的错误，然后重试。有关其他帮助，请参阅[对自定义密钥存储进行故障排除](fix-keystore.md)。

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

**下一步**：要使用 AWS CloudHSM 密钥库，请[将其连接到其 AWS CloudHSM 集群](connect-keystore.md)。