

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

# Connect AWS CloudHSM 密钥库
<a name="connect-keystore"></a>

新的 AWS CloudHSM 密钥库未连接。您需要先将其连接到其关联的 AWS CloudHSM 集群，然后才能 AWS KMS keys 在 AWS CloudHSM 密钥库中创建和使用。您可以随时连接和断开 AWS CloudHSM 密钥库的连接，并[查看其连接状态](view-keystore.md#view-keystore-console)。

您无需连接 AWS CloudHSM 密钥库。您可以将 AWS CloudHSM 密钥库无限期地置于断开连接状态，并且仅在需要使用时才连接密钥库。但是，您可能希望定期测试连接以验证设置是否正确以及自定义密钥存储是否可以连接。

**注意**  
AWS CloudHSM 只有当密钥库从未`DISCONNECTED`连接过或您明确断开连接时，密钥库才会处于连接状态。如果您的 AWS CloudHSM 密钥库连接状态为，`CONNECTED`但您在使用它时遇到问题，请确保其关联的 AWS CloudHSM 集群处于活动状态并且至少包含一个处于活动状态的集群 HSMs。如需帮助解决连接失败问题，请参阅 [对自定义密钥存储进行故障排除](fix-keystore.md)。

当您连接 AWS CloudHSM 密钥库时，会 AWS KMS 找到关联的 AWS CloudHSM 集群，连接到该集群，以[`kmsuser`加密用户](keystore-cloudhsm.md#concept-kmsuser) (CU) 的身份登录 AWS CloudHSM 客户端，然后轮换`kmsuser`密码。 AWS KMS 只要 AWS CloudHSM 密钥库已连接，就会一直登录到 AWS CloudHSM 客户端。

要建立连接，请在集[群的虚拟私有云 (VPC) `kms-<custom key store ID>` 中 AWS KMS 创建一个名为的安全组](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。该安全组只有一条规则，允许来自集群安全组的入站流量。 AWS KMS 还会在集群的私有子[网的每个可用区中创建一个 elastic network inter](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html) face (ENI)。 AWS KMS 将 ENIs 添加到集群`kms-<cluster ID>`的安全组和安全组。每个 ENI 的描述都是 `KMS managed ENI for cluster <cluster-ID>`。

连接过程可能需要较长时间才能完成；最多 20 分钟。

在连接 AWS CloudHSM 密钥库之前，请验证其是否符合要求。
+ 其关联的 AWS CloudHSM 群集必须包含至少一个活动的 HSM。要查找集群 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)。
+ 集群必须有一个[`kmsuser`加密用户](create-keystore.md#kmsuser-concept) (CU) 帐户，但是当您连接 AWS CloudHSM 密钥库时，该 CU 无法登录到集群。要获取有关注销的帮助，请参阅 [如何注销并重新连接](fix-keystore.md#login-kmsuser-2)。
+  AWS CloudHSM 密钥库的连接状态不能为`DISCONNECTING`或`FAILED`。要查看连接状态，请使用 AWS KMS 控制台或[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html)响应。如果连接状态为 `FAILED`，请断开自定义密钥存储，修复问题，然后连接它。

如需帮助解决连接失败问题，请参阅 [如何修复连接故障](fix-keystore.md#fix-keystore-failed)。

连接 AWS CloudHSM 密钥库后，您可以在其中[创建 KMS 密钥并在[加密操作](manage-cmk-keystore.md#use-cmk-keystore)中](create-cmk-keystore.md)使用现有的 KMS 密钥。

## 连接并重新连接到您的 AWS CloudHSM 密钥库
<a name="connect-hsm-keystore"></a>

您可以在 AWS KMS 控制台中或使用[ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html)操作来连接或重新连接您的 AWS CloudHSM 密钥存储库。

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

要连接中的 AWS CloudHSM 密钥存储库 AWS 管理控制台，请先从**自定义 AWS CloudHSM 密钥存储库页面中选择密钥存储库**。连接过程可能最多需要 20 分钟才能完成。

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. 选择要连接的 AWS CloudHSM 密钥库所在行。

   如果 AWS CloudHSM 密钥库的连接状态为 “**失败**”，则必须先[断开自定义密钥库](disconnect-keystore.md#disconnect-keystore-console)的连接，然后再进行连接。

1. 从 **Key store actions**（密钥存储操作）菜单中选择 **Connect**（连接）。

AWS KMS 开始连接您的自定义密钥存储库的过程。它将查找关联的 AWS CloudHSM 集群，构建所需的网络基础设施，连接到网络基础设施，以 `kmsuser` CU 身份登录到 AWS CloudHSM 集群，然后轮换 `kmsuser` 密码。当操作完成时，连接状态将变为**已连接**。

如果操作失败，则会出现一条描述失败原因的错误消息。在尝试再次连接之前，请[查看 AWS CloudHSM 密钥库的连接状态](view-keystore.md)。如果状态为**失败**，则必须先[断开自定义密钥存储](disconnect-keystore.md#disconnect-keystore-console)，然后再次连接。如果您需要帮助，请参阅[对自定义密钥存储进行故障排除](fix-keystore.md)。

**下一步：**[在密钥库中创建 KMS AWS CloudHSM 密钥](create-cmk-keystore.md)。

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

要连接已断开连接的 AWS CloudHSM 密钥库，请使用[ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html)操作。关联的 AWS CloudHSM 集群必须至少包含一个活动的 HSM，并且连接状态不能为。`FAILED`

连接过程需要较长时间才能完成；最多 20 分钟。除非该过程迅速失败，否则 操作将返回 HTTP 200 响应和无属性的 JSON 对象。但是，此初始响应不指示连接是否成功。要确定自定义密钥库的连接状态，请参阅[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html)响应。

本部分中的示例使用 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/)，但您可以使用任何受支持的编程语言。

要识别 AWS CloudHSM 密钥库，请使用其自定义密钥库 ID。您可以在控制台的**自定义密钥存储**页面上找到 ID，也可以使用不带参数的[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html)操作来找到 ID。在运行此示例之前，请将示例 ID 替换为有效的 ID。

```
$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0
```

要验证 AWS CloudHSM 密钥库是否已连接，请使用[DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html)操作。默认情况下，此操作将返回您的账户和区域中的所有自定义密钥存储。但您可以使用 `CustomKeyStoreId` 或 `CustomKeyStoreName` 参数（但不能同时使用两者）将响应限制到特定自定义密钥存储。`ConnectionState` 值 `CONNECTED` 表示自定义密钥存储已连接到其 AWS CloudHSM 集群。

**注意**  
该`CustomKeyStoreType`字段已添加到`DescribeCustomKeyStores`响应中，以区分 AWS CloudHSM 密钥存储库和外部密钥存储。

```
$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0
{
   "CustomKeyStores": [
      "CustomKeyStoreId": "cks-1234567890abcdef0",
      "CustomKeyStoreName": "ExampleCloudHSMKeyStore",
      "CloudHsmClusterId": "cluster-1a23b4cdefg",
      "CustomKeyStoreType": "AWS_CLOUDHSM",
      "TrustAnchorCertificate": "<certificate string appears here>",
      "CreationDate": "1.499288695918E9",
      "ConnectionState": "CONNECTED"
   ],
}
```

如果 `ConnectionState` 值为 FAILED，`ConnectionErrorCode` 元素将指示失败的原因。在这种情况下，在您的账户中找 AWS KMS 不到具有 AWS CloudHSM 集群 ID 的集群`cluster-1a23b4cdefg`。如果您删除了该集群，则可以[从原始集群的备份还原它](https://docs.aws.amazon.com/cloudhsm/latest/userguide/create-cluster-from-backup.html)，然后[编辑自定义密钥存储的集群 ID](update-keystore.md)。有关响应连接错误代码的帮助信息，请参阅 [如何修复连接故障](fix-keystore.md#fix-keystore-failed)。

```
$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0
{
   "CustomKeyStores": [
      "CustomKeyStoreId": "cks-1234567890abcdef0",
      "CustomKeyStoreName": "ExampleKeyStore",
      "CloudHsmClusterId": "cluster-1a23b4cdefg",
      "CustomKeyStoreType": "AWS_CLOUDHSM",
      "TrustAnchorCertificate": "<certificate string appears here>",
      "CreationDate": "1.499288695918E9",
      "ConnectionState": "FAILED"
      "ConnectionErrorCode": "CLUSTER_NOT_FOUND"
   ],
}
```