

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

# 入门 AWS CloudHSM
<a name="getting-started"></a>

以下主题可帮助您在中创建、初始化和激活集群 AWS CloudHSM。在您完成这些过程后，您即可管理用户、管理集群并使用包含的软件库来执行加密操作。为了获得最佳体验，请按照列出的顺序访问主题。

**Topics**
+ [为创建 IAM 管理组 AWS CloudHSM](create-iam-user.md)
+ [为创建虚拟私有云 (VPC) AWS CloudHSM](create-vpc.md)
+ [在中创建集群 AWS CloudHSM](create-cluster.md)
+ [在中查看您的集群的安全组 AWS CloudHSM](configure-sg.md)
+ [启动用于与之交互的 Amazon EC2 客户端实例 AWS CloudHSM](launch-client-instance.md)
+ [为其配置客户端 Amazon EC2 实例安全组 AWS CloudHSM](configure-sg-client-instance.md)
+ [在中创建 HSM AWS CloudHSM](create-hsm.md)
+ [在 AWS CloudHSM （可选）中验证集群 HSM 的身份和真实性](verify-hsm-identity.md)
+ [在中初始化集群 AWS CloudHSM](initialize-cluster.md)
+ [安装和配置 CloudHSM CLI](gs_cloudhsm_cli-install.md)
+ [在中激活集群 AWS CloudHSM](activate-cluster.md)
+ [在客户端和之间设置双向 TLS AWS CloudHSM （推荐）](getting-started-setup-mtls.md)
+ [在中创建和使用密钥 AWS CloudHSM](create-apps.md)

# 为创建 IAM 管理组 AWS CloudHSM
<a name="create-iam-user"></a>

入门的第一步 AWS CloudHSM 是设置 IAM 权限。

作为[最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users)，请勿使用您的 AWS 账户根用户 与之互动 AWS，包括 AWS CloudHSM。而是使用 AWS Identity and Access Management (IAM) 创建 IAM 用户、IAM 角色或联合用户。按照一节[创建 IAM 用户和管理员组](#create-iam-admin)中的步骤创建管理员群组并将**AdministratorAccess**策略附加到该群组。然后，创建新的管理员用户并将该用户添加到该组中。根据需要向组添加其他用户。您添加的每个用户都将从该组继承**AdministratorAccess**策略。

另一种最佳做法是创建一个仅具有运行所需权限的 AWS CloudHSM 管理员组 AWS CloudHSM。根据需要向此组添加单独用户。每个用户将继承已附加到该组的有限权限，而不是全部的 AWS 访问权限。以下[客户管理的政策 AWS CloudHSM](identity-access-management.md#permissions-for-cloudhsm)部分包含您应附加到 AWS CloudHSM 管理员组的策略。

AWS CloudHSM 为您的 AWS 账户定义[服务关联角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服务关联角色当前定义了允许您的账户记录 AWS CloudHSM 事件的权限。该角色可以由您自动创建， AWS CloudHSM 也可以由您手动创建。您无法修改该角色，但可以将其删除。有关更多信息，请参阅 [的服务相关角色 AWS CloudHSM](service-linked-roles.md)。

## 创建 IAM 用户和管理员组
<a name="create-iam-admin"></a>

首先创建一个 IAM 用户及其管理员组。

### 注册获取 AWS 账户
<a name="sign-up-for-aws"></a>

如果您没有 AWS 账户，请完成以下步骤来创建一个。

**报名参加 AWS 账户**

1. 打开[https://portal.aws.amazon.com/billing/注册。](https://portal.aws.amazon.com/billing/signup)

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册时 AWS 账户，就会创建*AWS 账户根用户*一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 注册过程完成后会向您发送一封确认电子邮件。您可以随时前往 [https://aws.amazon.com/](https://aws.amazon.com/)并选择 “**我的账户”，查看您当前的账户活动并管理您的账户**。

### 创建具有管理访问权限的用户
<a name="create-an-admin"></a>

注册后，请保护您的安全 AWS 账户 AWS 账户根用户 AWS IAM Identity Center，启用并创建管理用户，这样您就不会使用 root 用户执行日常任务。

**保护你的 AWS 账户根用户**

1.  选择 **Root 用户**并输入您的 AWS 账户 电子邮件地址，以账户所有者的身份登录。[AWS 管理控制台](https://console.aws.amazon.com/)在下一页上，输入您的密码。

   要获取使用根用户登录方面的帮助，请参阅《AWS 登录 用户指南》**中的 [Signing in as the root user](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 为您的根用户启用多重身份验证（MFA）。

   有关说明，请参阅 I [A *M* 用户指南中的为 AWS 账户 根用户启用虚拟 MFA 设备（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**创建具有管理访问权限的用户**

1. 启用 IAM Identity Center。

   有关说明，请参阅**《AWS IAM Identity Center 用户指南》中的[启用 AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，为用户授予管理访问权限。

   有关使用 IAM Identity Center 目录 作为身份源的教程，请参阅《[用户*指南》 IAM Identity Center 目录中的使用默认设置配置AWS IAM Identity Center 用户*访问权限](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理访问权限的用户身份登录**
+ 要使用您的 IAM Identity Center 用户身份登录，请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录 URL。

  有关使用 IAM Identity Center 用户[登录的帮助，请参阅*AWS 登录 用户指南*中的登录 AWS 访问门户](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**将访问权限分配给其他用户**

1. 在 IAM Identity Center 中，创建一个权限集，该权限集遵循应用最低权限的最佳做法。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 将用户分配到一个组，然后为该组分配单点登录访问权限。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Add groups](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

有关您可以附加 AWS CloudHSM 到 IAM 用户组的策略示例，请参阅[的身份和访问管理 AWS CloudHSM](identity-access-management.md)。

# 为创建虚拟私有云 (VPC) AWS CloudHSM
<a name="create-vpc"></a>

您的集群需要虚拟私有云 (VPC) AWS CloudHSM。如果您还没有，请按照本主题中的步骤创建 VPC。

**注意**  
按照这些步骤将创建公有子网和私有子网。

**创建 VPC**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航栏上，使用区域选择器选择[当前支持的AWS 区域](https://docs.aws.amazon.com/general/latest/gr/rande.html#cloudhsm_region)之一。 AWS CloudHSM 

1. 选择**创建 VPC** 按钮。

1. 对于**要创建的资源**，选择 **VPC 等**。

1. 对于**名称标签自动生成**，键入一个可识别的名称（如 **CloudHSM**）。

1. 对于 **IPv6 CIDR 块**，请选择**亚马逊提供的 IPv6 CIDR 块**以使用您的 IPv6 连接， HSMs 然后为您的集群 AWS 分配一个 IPv6 CIDR 块。此设置支持双栈网络类型。如果您不需要 IPv6 连接，请保留默认设置。

1. 保留所有其他选项的默认值。

1. 选择**创建 VPC**。

1. 创建 VPC 后，选择**查看 VPC** 以查看您刚才所创建的 VPC。

# 在中创建集群 AWS CloudHSM
<a name="create-cluster"></a>

集群是各个硬件安全模块 (HSMs) 的集合。 AWS CloudHSM 同步每个群集 HSMs 中的，以便它们充当逻辑单元。 AWS CloudHSM *提供两种类型 HSMs：*hsm1.medium 和 hsm2m.med* ium。*创建集群时，您可以选择将两者中的哪一个加入到您的集群中。有关每种 HSM 类型和集群模式之间的差异的详细信息，请参阅 [AWS CloudHSM 集群模式](cluster-hsm-types.md)。

创建集群时， AWS CloudHSM 会代表您为该集群创建一个安全组。此安全组控制对集群 HSMs 中的的网络访问。它仅允许来自安全组中的亚马逊弹性计算云 (Amazon EC2) 实例的入站连接。默认情况下，安全组不包含任何实例。稍后，您可以[启动客户端实例](launch-client-instance.md)和[配置集群的安全组](configure-sg.md)以允许与 HSM 的通信和连接。

**注意事项**
+ 以下是在 AWS CloudHSM中创建集群时的一些注意事项：
  + 创建集群时， AWS CloudHSM 会创建一个名为 AWSService RoleForCloud HSM 的[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)。如果 AWS CloudHSM 无法创建角色或角色尚不存在，则可能无法创建集群。有关更多信息，请参阅 [解决 AWS CloudHSM 集群创建失败的问题](troubleshooting-create-cluster.md)。有关服务相关角色的更多信息，请参阅[的服务相关角色 AWS CloudHSM](service-linked-roles.md)。
  +  如果您使用的是[AWS CloudHSM 双堆栈终端节点](https://docs.aws.amazon.com/general/latest/gr/cloudhsm.html)（即 cloudhsmv2. *<region>*.api.aws)，请确保更新您的 IAM 政策以进行处理。 IPv6有关更多信息，请参阅 “[安全性” 下的 “将 IAM 策略升级为IPv6 ” 部分](https://docs.aws.amazon.com/cloudhsm/latest/userguide/ip-access.html)。

可以通过 [AWS CloudHSM 控制台](https://console.aws.amazon.com/cloudhsm/)、[AWS Command Line Interface （AWS CLI）](https://aws.amazon.com/cli/)或 AWS CloudHSM API 创建集群。

有关集群参数和的详细信息 APIs，请参阅《 AWS CLI 命令参考》[https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/create-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/create-cluster.html)中的。

------
#### [ Console ]

**创建集群 (控制台)**

1. 在家中打开[https://console.aws.amazon.com/cloudhsm/主 AWS CloudHSM](https://console.aws.amazon.com/cloudhsm/home)机。

1. 在导航栏上，使用区域选择器选择 AWS CloudHSM 当前支持的 [AWS 区域之一](https://docs.aws.amazon.com/general/latest/gr/rande.html#cloudhsm_region)。

1. 选择**创建集群**。

1. 在**集群配置**部分中，执行以下操作：

   1. 对于 **VPC**，选择您在 [为创建虚拟私有云 (VPC) AWS CloudHSM](create-vpc.md) 中创建的 VPC。

   1. 对于**可用区**，在可用区旁边选择您创建的私有子网。
**注意**  
即使给定可用区 AWS CloudHSM 不支持，性能也不应受到影响，因为集群 HSMs 中的所有可用区 AWS CloudHSM 会自动进行负载平衡。要查看可用区支持的内容 *AWS 一般参考*，请参阅中的[AWS CloudHSM 区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#cloudhsm_region) AWS CloudHSM。

   1. 对于 **HSM 类型**，选择可以在集群中创建的 HSM 类型以及所需的集群模式。要查看每个区域所支持的 HSM 类型，请参阅 [AWS CloudHSM 定价计算器](https://aws.amazon.com/cloudhsm/pricing/)。
**重要**  
集群创建后，无法更改集群模式。有关适合您的使用案例的类型和模式的信息，请参阅 [AWS CloudHSM 集群模式](cluster-hsm-types.md)。

   1. 在 “**网络类型**” 中，选择用于访问您的 IP 地址协议 HSMs。 IPv4 将您的应用程序之间的通信限制 HSMs 为 “ IPv4 仅限”。这是默认选项。双栈同时支持 IPv4 和 IPv6通信。要使用双堆栈，请将 IPv4 和 IPv6 CIDRs添加到您的 VPC 和子网配置中。初始设置后很难更改网络类型。要对其进行修改，请创建现有集群的备份，然后使用所需的网络类型还原一个新集群。有关更多信息，请参阅[通过备份创建 AWS CloudHSM 集群](https://docs.aws.amazon.com/cloudhsm/latest/userguide/create-cluster-from-backup.html) 

   1. 对于**集群源**，指定您是要创建新集群还是从现有备份中还原一个集群。
      + 处于非 FIPS 模式的集群备份只能用于还原处于非 FIPS 模式的集群。
      + 处于 FIPS 模式的集群备份只能用于还原处于 FIPS 模式的集群。

1. 选择**下一步**。

1. 指定服务的备份保留期。

   1. 接受 90 天的默认保留期或键入一个介于 7 到 379 天之间的新值。该服务将自动删除此集群中早于您在此处所指定的值的备份。您以后可以更改此值。有关更多信息，请参阅 [配置备份保留](manage-backup-retention.md)。

1. 选择**下一步**。

1. （可选）键入标签键和一个可选标签值。要向集群添加多个标签，请选择 **添加标签**。

1. 选择**审核**。

1. 检查您的集群配置，然后选择 **创建集群**。

如果您尝试创建集群失败，则可能与 AWS CloudHSM 服务相关角色的问题有关。有关解决故障的帮助，请参阅[解决 AWS CloudHSM 集群创建失败的问题](troubleshooting-create-cluster.md)。

------
#### [ AWS CLI ]

**创建集群 ([AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/))**
+ 在命令提示符下，运行 **[create-cluster](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/create-cluster.html)** 命令。指定 HSM 实例类型、备份保留期以及您计划在其中创建 IDs 的子网的子网。 HSMs使用您创建 IDs 的私有子网的子网。每个可用区仅指定一个子网。

  ```
  $ aws cloudhsmv2 create-cluster --hsm-type hsm2m.medium \
                      --backup-retention-policy Type=DAYS,Value=<number of days> \
                      --subnet-ids <subnet ID> \
                      --mode <FIPS> \
                      --network-type <IPV4>
  
  {
      "Cluster": {
          "BackupPolicy": "DEFAULT",
          "BackupRetentionPolicy": {
              "Type": "DAYS",
              "Value": 90
           },
          "VpcId": "vpc-50ae0636",
          "SubnetMapping": {
              "us-west-2b": "subnet-49a1bc00",
              "us-west-2c": "subnet-6f950334",
              "us-west-2a": "subnet-fd54af9b"
          },
          "SecurityGroup": "sg-6cb2c216",
          "HsmType": "hsm2m.medium",
          "NetworkType": "IPV4",
          "Certificates": {},
          "State": "CREATE_IN_PROGRESS",
          "Hsms": [],
          "ClusterId": "cluster-igklspoyj5v",
          "ClusterMode": "FIPS",
          "CreateTimestamp": 1502423370.069
      }
  }
  ```
**注意**  
`ClusterMode` 是除 hsm1.medium.`--mode` 之外的所有 hsm 类型的必需参数：  

  ```
  $ aws cloudhsmv2 create-cluster --hsm-type hsm2m.medium \
    				--backup-retention-policy Type=DAYS,Value=<number of days> \
    				--subnet-ids <subnet ID> \
  				--mode NON_FIPS
  ```

如果您尝试创建集群失败，则可能与 AWS CloudHSM 服务相关角色的问题有关。有关解决故障的帮助，请参阅[解决 AWS CloudHSM 集群创建失败的问题](troubleshooting-create-cluster.md)。

------
#### [ AWS CloudHSM API ]

**创建集群 (AWS CloudHSM API)**
+ 发送 [https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_CreateCluster.html) 请求。指定 HSM 实例类型、备份保留策略以及您计划在其中创建 IDs 的子网的子网。 HSMs使用您创建 IDs 的私有子网的子网。每个可用区仅指定一个子网。

如果您尝试创建集群失败，则可能与 AWS CloudHSM 服务相关角色的问题有关。有关解决故障的帮助，请参阅[解决 AWS CloudHSM 集群创建失败的问题](troubleshooting-create-cluster.md)。

------

# 在中查看您的集群的安全组 AWS CloudHSM
<a name="configure-sg"></a>

 在创建集群或向集群中添加 HSM 时，`cloudhsm-cluster-<clusterID>-sg`如果名称不存在，则使用该名称 AWS CloudHSM 创建一个安全组。此安全组包含一个预配置的 TCP 规则，允许集群安全组内通过端口 2223-2225 进行的入站和出站通信。此 SG 允许您的 EC2 实例使用您的 VPC HSMs 在您的集群中与之通信。

**警告**  
 请勿删除或修改预配置的 TCP 规则，该规则填充在集群安全组中。此规则可以防止出现连接问题和未经授权访问您的 HSMs。
 集群安全组可防止未经授权访问您的 HSMs。任何可以访问安全组中实例的人都可以访问您的 HSMs。大多数操作需要用户登录到 HSM。但是，可以在不进行身份验证 HSMs 的情况下进行归零，这会破坏密钥材料、证书和其他数据。在发生这种情况时，在最新备份后创建或修改的数据将会丢失且无法恢复。要防止未经授权的访问，请确保仅受信任的管理员能够修改或访问默认安全组中的实例。  
 hsm2m.medium 集群引入了 mTLS 功能来限制未经授权的用户连接到集群。未经授权的用户在尝试零化之前需要有效的 mTLS 凭证才能成功连接到集群。

 在下一步中，您可以[启动 Amazon EC2 实例](launch-client-instance.md)，并 HSMs 通过将[集群安全组附加到该](configure-sg-client-instance.md)实例来将其连接到您的实例。

# 启动用于与之交互的 Amazon EC2 客户端实例 AWS CloudHSM
<a name="launch-client-instance"></a>

 要与 AWS CloudHSM 集群和 HSM 实例进行交互并进行管理，您必须能够与 HSM 的弹性网络接口进行通信。执行这一操作的最简单方式是使用与您的集群相同的 VPC 中的 EC2 实例。也可以使用以下 AWS 资源连接到您的集群：
+ [Amazon VPC 对等](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html)
+ [Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)
+ [VPN 连接](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpn-connections.html)

**注意**  
本指南提供了如何将 EC2 实例连接到 AWS CloudHSM 集群的简化示例。有关安全网络配置的最佳实践，请参阅[安全访问您的集群](bp-cluster-management.md#bp-secure-access)。

 本 AWS CloudHSM 文档通常假设您在创建集群的同一 VPC 和可用区 (AZ) 中使用 EC2 实例。

**创建 EC2 实例**

1. 打开 **EC2 控制面板**，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择**启动实例**。从下拉菜单中，选择**启动实例**。

1. 在**名称**字段中，输入您的 EC2 实例 名称。

1. 在**应用程序和操作系统映像（亚马逊机器映像）**部分，选择与 CloudHSM 支持的平台对应的亚马逊机器映像（AMI）。有关更多信息，请参阅 [AWS CloudHSM 客户端 SDK 5 支持的平台](client-supported-platforms.md)。

1. 在**实例类型**部分中，选择一个实例类型。

1. 在**密钥对**部分，使用现有密钥对或选择**创建新密钥对**并完成以下步骤：

   1. 对于**密钥对名称**，输入密钥对的名称。

   1. 对于**密钥对类型**，选择一个密钥对。

   1. 对于**私有密钥文件格式**，选择私有密钥文件格式。

   1. 选择**创建密钥对**。

   1. 下载并保存私有密钥文件。
**重要**  
这是您保存私有密钥文件的唯一机会。将文件下载并保存在安全的位置。在启动实例时必须提供密钥对的名称。此外，每次连接实例时都必须提供相应的私有密钥，并选择设置时创建的密钥对。

1. 在**网络设置**中，选择**编辑**。

1. 对于**网络**，选择您之前为集群创建的 VPC。

1. 对于**子网**，选择您为 VPC 创建的公有子网。

1. 对于**自动分配公有 IP**，选择**启用**。

1. 对于**自动分配 IPv6 IP**，请选择**启用**以对您的群集和双 NetworkType栈使用 IPv6 连接。如果您启用此选项，请更新您的 Amazon EC2 实例的安全组规则、VPC 和子网路由表以及网络， ACLs 以允许从该实例到的 IPv6 出站流量 HSMs。

1. 选择**选择现有安全组**。

1. 在**通用安全组**中，从下拉菜单中选择默认安全组。

1. 在**配置存储**中，使用下拉菜单选择存储配置。

1. 在**摘要**窗口中，选择 **Launch instance**（启动实例）。
**注意**  
完成此步骤将开始 EC2 实例创建过程。

有关创建 Linux Amazon EC2 客户端的更多信息，请参阅 [Amazon EC2 Linux 实例入门](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)。有关连接到正在运行的客户端的信息，请参见以下主题：
+ [使用 SSH 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)
+ [使用 PuTTY 从 Windows 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)

 《Amazon EC2 用户指南》包含有关设置和使用 Amazon EC2 实例的详细说明。以下列表概述了适用于 Linux 和 Windows Amazon EC2 客户端的文档：
+ 要创建 Linux Amazon EC2 客户端，请参阅 [ Amazon EC2 Linux 实例入门](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)。

  有关连接到正在运行的客户端的信息，请参见以下主题：
  + [使用 SSH 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)
  + [使用 PuTTY 从 Windows 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)
+  要创建 Windows Amazon EC2 客户端，请参阅 [Amazon EC2 Windows 实例入门](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html)。有关连接到 Windows 客户端的更多信息，请参阅[连接到 Windows 实例](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)。

**注意**  
 您的 EC2 实例可以运行本指南中包含的所有 AWS CLI 命令。如果未安装 AWS CLI ，您可以从 [AWS Command Line Interface](https://aws.amazon.com/cli/) 中下载它。如果您使用的是 Windows，则可以下载并运行 64 位或 32 位 Windows 安装程序。如果您使用的是 Linux 或 macOS，则可以使用 pip 安装 CLI。

# 为其配置客户端 Amazon EC2 实例安全组 AWS CloudHSM
<a name="configure-sg-client-instance"></a>

当您在中的集群启动 Amazon EC2 实例时 AWS CloudHSM，您将其与默认的 Amazon VPC 安全组相关联。本主题介绍如何将集群安全组与 EC2 实例关联。此关联允许在您的 EC2 实例上运行的 AWS CloudHSM 客户端与您的 HSM 通信。要将您的 EC2 实例连接到您的 AWS CloudHSM 集群，您必须正确配置 VPC 默认安全组*并将*集群安全组与该实例关联。

使用以下步骤完成配置更改。

**Topics**
+ [步骤 1：修改默认安全组](#configure-sg-client-instance-modify-default-security-group)
+ [步骤 2：将 Amazon EC2 实例连接到集 AWS CloudHSM 群](#configure-sg-client-instance-connect-the-ec2-instance-to-the-HSM-cluster)

## 步骤 1：修改默认安全组
<a name="configure-sg-client-instance-modify-default-security-group"></a>

您需要修改默认安全组以允许 SSH 或 RDP 连接，以便您可以下载和安装客户端软件，并与 HSM 进行交互。

**修改默认安全组**

1. 打开 **EC2 控制面板**，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择**实例（正在运行）**，然后选中要安装 AWS CloudHSM 客户端的 EC2 实例旁边的复选框。

1. 在**安全**选项卡下，选择名为**默认**的安全组。

1. 在页面顶部，选择**操作**，然后选择**编辑入站规则**。

1. 选择**添加规则**。

1. 在**类型**中，执行下列操作之一：
   + 对于 Windows Server Amazon EC2 实例，选择 **RDP**。将自动填充端口范围 `3389`。
   + 对于 Linux Amazon EC2 实例，选择 **SSH**。将自动填充端口范围 `22`。

1. 对于任一选项，请将**源**设置为**我的 IP**，以使您与您的 Amazon EC2 实例通信。
**重要**  
不要指定 0.0.0.0/0 作为端口范围，以避免允许任何人访问您的实例。

1. 选择**保存**。

## 步骤 2：将 Amazon EC2 实例连接到集 AWS CloudHSM 群
<a name="configure-sg-client-instance-connect-the-ec2-instance-to-the-HSM-cluster"></a>

您必须将集群安全组附加到 EC2 实例，这样 EC2 实例才能 HSMs 在您的集群中与之通信。集群安全组包含一个预配置规则，允许通过端口 2223-2225 进行入站通信。

**将 EC2 实例连接到集 AWS CloudHSM 群**

1. 打开 **EC2 控制面板**，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择 “**实例（正在运行）**”，然后选中要安装 AWS CloudHSM 客户端的 EC2 实例对应的复选框。

1. 在页面顶部，依次选择**操作**、**联网**和**更改安全组**。

1. 选择组名与您的集群 ID 匹配的安全组，例如 `cloudhsm-cluster-<clusterID>-sg`。

1. 选择**添加安全组**。

1. 选择**保存**。

**注意**  
 您最多可将五个安全组分配给 Amazon EC2 实例。如果您已达到最大限制，则必须修改 Amazon EC2 实例的默认安全组和集群安全组：  
在默认安全组中，执行以下操作：  
添加入站规则以借助 TCP 协议通过端口 `2223-2225` 允许来自集群安全组的流量。
在集群安全组中，执行以下操作：  
添加入站规则以借助 TCP 协议通过端口 `2223-2225` 允许来自默认安全组的流量。

# 在中创建 HSM AWS CloudHSM
<a name="create-hsm"></a>

 在中创建集群后 AWS CloudHSM，您可以创建硬件安全模块 (HSM)。不过，集群必须先处于未初始化状态，然后您才能在集群中创建 HSM。要确定集群的状态，请在[AWS CloudHSM 控制台中查看集群页面](https://console.aws.amazon.com/cloudhsm/home)，使用运行**[describe-clusters](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/describe-clusters.html)**命令或在 AWS CloudHSM API 中发送[DescribeClusters](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html)请求。 AWS CLI 可以通过 [AWS CloudHSM 控制台](https://console.aws.amazon.com/cloudhsm/)、[AWS CLI](https://aws.amazon.com/cli/) 或 AWS CloudHSM API 创建 HSM。

**重要**  
 仅在集群处于未初始化状态时创建一个 HSM。

------
#### [ Console ]

**创建 HSM (控制台)**

1. 在家中打开[https://console.aws.amazon.com/cloudhsm/主 AWS CloudHSM](https://console.aws.amazon.com/cloudhsm/home)机。

1. 选择要创建 HSM 的集群 ID 旁边的单选按钮。

1. 选择**操作**。从下拉菜单中，选择**初始化**。

1. 为正在创建的 HSM 选择可用区 (AZ)。

1. 选择**创建**。

在创建集群和 HSM 后，您可以选择[验证 HSM 的身份](verify-hsm-identity.md)或直接继续[初始化集群](initialize-cluster.md)。

------
#### [ AWS CLI ]

**创建 HSM ([AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/))**
+ 在命令提示符下，运行 **[create-hsm](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/create-hsm.html)** 命令。指定之前创建的集群的集群 ID，并为 HSM 指定可用区。以 `us-west-2a`、`us-west-2b` 等形式指定可用区。

  ```
  $ aws cloudhsmv2 create-hsm --cluster-id <cluster ID> --availability-zone <Availability Zone>
  
  {
      "Hsm": {
          "HsmId": "hsm-ted36yp5b2x",
          "EniIp": "10.0.1.12",
          "EniIpV6": "2600:113f:404:be09:310e:ed34:3412:f733",
          "AvailabilityZone": "us-west-2a",
          "ClusterId": "cluster-igklspoyj5v",
          "EniId": "eni-5d7ade72",
          "SubnetId": "subnet-fd54af9b",
          "State": "CREATE_IN_PROGRESS"
      }
  }
  ```

在创建集群和 HSM 后，您可以选择[验证 HSM 的身份](verify-hsm-identity.md)或直接继续[初始化集群](initialize-cluster.md)。

------
#### [ AWS CloudHSM API ]

**创建 HSM (AWS CloudHSM API)**
+ 发送 [https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_CreateHsm.html](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_CreateHsm.html) 请求。指定之前创建的集群的集群 ID，并为 HSM 指定可用区。

在创建集群和 HSM 后，您可以选择[验证 HSM 的身份](verify-hsm-identity.md)或直接继续[初始化集群](initialize-cluster.md)。

------

# 在 AWS CloudHSM （可选）中验证集群 HSM 的身份和真实性
<a name="verify-hsm-identity"></a>

要在中初始化集群 AWS CloudHSM，您需要签署集群的第一个硬件安全模块 (HSM) 生成的证书签名请求 (CSR)。在执行此操作之前，您可能需要验证 HSM 的身份和真实性。

**注意**  
此过程是可选过程。但是，它仅在初始化群集之前有效。集群初始化后，您无法使用此过程来获取证书或验证。 HSMs

要验证群集的第一个 HSM 的身份，请完成以下步骤：

1. [获取证书和 CSR](#get-certificates) - 在此步骤中，您将从 HSM 获取三个证书和一个 CSR。您还将获得两个根证书，一个来自 HSM 硬件制造商 AWS CloudHSM ，一个来自 HSM 硬件制造商。

1. [验证证书链](#verify-certificate-chains) — 在此步骤中，您将构造两个证书链，一个指向 AWS CloudHSM 根证书，另一个指向制造商根证书。然后，您使用这些证书链验证 HSM 证书，以确定该证书 AWS CloudHSM 和硬件制造商都证明 HSM 的身份和真实性。

1. [比较公有密钥](#compare-public-keys) - 在此步骤中，您将提取并比较 HSM 证书和集群 CSR 中的公有密钥以确保二者相同。这将使您坚信 CSR 是由真实可信的 HSM 生成的。

下图显示了 CSR、证书及其相互关系。后续列表定义了每个证书。

![\[HSM 证书及其关系。\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/images/hsm-certificate-relationships.png)


**AWS 根证书**  
 AWS CloudHSM这是根证书。

**制造商根证书**  
这是硬件制造商的根证书。

**AWS 硬件证书**  
AWS CloudHSM 在将 HSM 硬件添加到队列时创建了此证书。此证书声明自己 AWS CloudHSM 拥有硬件。

**制造商硬件证书**  
HSM 硬件制造商在制造 HSM 硬件时已创建此证书。此证书声明制造商创建了该硬件。

**HSM 证书**  
HSM 证书在您创建群集中的第一个 HSM 时由经 FIPS 验证的硬件生成。此证书声明 HSM 硬件已创建 HSM。

**群集 CSR**  
第一个 HSM 将创建群集 CSR。在[对群集 CSR 进行签名](initialize-cluster.md#sign-csr)时，您将声明群集。然后，您可以使用已签名 CSR [初始化群集](initialize-cluster.md#initialize)。

## 步骤 1：从 HSM 获取证书
<a name="get-certificates"></a>

要验证 HSM 的身份和真实性，请先获取 1 个 CSR 和 5 个证书。你可以从 HSM 获得其中三个证书，你可以使用[AWS CloudHSM 控制台](https://console.aws.amazon.com/cloudhsm/)、[AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) 或 AWS CloudHSM API 来完成。

------
#### [ Console ]

**获取 CSR 和 HSM 证书 (控制台)**

1. 在家中打开[https://console.aws.amazon.com/cloudhsm/主 AWS CloudHSM](https://console.aws.amazon.com/cloudhsm/home)机。

1. 选中要验证的 HSM 的集群 ID 旁边的单选按钮。

1. 选择**操作**。从下拉菜单中，选择**初始化**。

1. 如果您未完成旨在创建 HSM 的 [上一步](create-hsm.md) 操作，则请为正在创建的 HSM 选择可用区（AZ）。然后选择 **创建**。

1. 在证书和 CSR 准备就绪后，您将看到用于下载它们的链接。  
![\[AWS CloudHSM 控制台中的下载证书签名请求页面。\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/images/download-csr-hsm-cert.png)

1. 选择用于下载和保存 CSR 和证书的每个链接。要简化后续步骤，请将所有文件保存到同一目录中，并使用默认文件名。

------
#### [ AWS CLI ]

**获取 CSR 和 HSM 证书 ([AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/))**
+ 在命令提示符处，运行 **[describe-clusters](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/describe-clusters.html)** 命令四次，每次提取 CSR 和不同的证书，然后将其保存到相应文件中。

  1. 发出以下命令以提取群集 CSR。*<cluster ID>*替换为您之前创建的集群的 ID。

     ```
     $ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \
                                        --output text \
                                        --query 'Clusters[].Certificates.ClusterCsr' \
                                        > <cluster ID>_ClusterCsr.csr
     ```

  1. 发出以下命令以提取 HSM 证书。*<cluster ID>*替换为您之前创建的集群的 ID。

     ```
     $ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \
                                        --output text \
                                        --query 'Clusters[].Certificates.HsmCertificate' \
                                        > <cluster ID>_HsmCertificate.crt
     ```

  1. 发出以下命令以提取 AWS 硬件证书。*<cluster ID>*替换为您之前创建的集群的 ID。

     ```
     $ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \
                                        --output text \
                                        --query 'Clusters[].Certificates.AwsHardwareCertificate' \
                                        > <cluster ID>_AwsHardwareCertificate.crt
     ```

  1. 发出以下命令以提取制造商硬件证书。*<cluster ID>*替换为您之前创建的集群的 ID。

     ```
     $ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \
                                        --output text \
                                        --query 'Clusters[].Certificates.ManufacturerHardwareCertificate' \
                                        > <cluster ID>_ManufacturerHardwareCertificate.crt
     ```

------
#### [ AWS CloudHSM API ]

**获取 CSR 和 HSM 证书 (AWS CloudHSM API)**
+ 发送 [https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html) 请求，然后从响应中提取并保存 CSR 和证书。

------

## 步骤 2：获取根证书
<a name="get-root-certificates"></a>

请按照以下步骤获取 AWS CloudHSM 和制造商的根证书。将根证书文件保存到包含 CSR 和 HSM 证书文件的目录。

**获取 AWS CloudHSM 和制造商根证书**

1. 下载 AWS CloudHSM 根证书：[AWS\$1CloudHSM\$1Root-G1.zip](samples/AWS_CloudHSM_Root-G1.zip)

1. 下载适合您的 HSM 类型的制造商根证书：
   + hsm1.medium 制造商根证书：[liquid\$1security\$1certificate.zip](https://www.marvell.com/content/dam/marvell/en/public-collateral/security-solutions/liquid_security_certificate.zip)
   + hsm2m.medium 制造商根证书：[liquid\$1security\$1certificate.zip](https://www.marvell.com/content/dam/marvell/en/public-collateral/security-solutions/liquidsecurity2_ar_v1.zip)
**注意**  
要从其登录页面下载每个证书，请使用以下链接：  
hsm1.medium [制造商根证书](https://www.marvell.com/products/security-solutions/liquid-security-hsm-adapters-and-appliances/liquidsecurity-certificate.html)的登录页面
hsm2m.medium [制造商根证书](https://www.marvell.com/products/security-solutions/nitrox-hs-adapters/liquidsecurity2-certificate-ls2-g-axxx-ar-f-bo-v1.html)的登录页面
您可能需要右键单击 **Download Certificate** 链接，然后选择 **Save Link As...** 才能保存证书文件。

1. 在下载文件后，提取 (解压缩) 其内容。

## 步骤 3：验证证书链
<a name="verify-certificate-chains"></a>

在此步骤中，您将构造两个证书链，一个指向 AWS CloudHSM 根证书，另一个指向制造商根证书。然后使用 OpenSSL 通过每个证书链验证 HSM 证书。

要创建证书链，请打开 Linux shell。您需要 OpenSSL (在大多数 Linux shell 中可用)，并且需要已下载的[根证书](#get-root-certificates)和 [HSM 证书文件](#get-certificates)。但是，您不需要执行 AWS CLI 此步骤，也无需将外壳与您的 AWS 账户关联。

**使用 AWS CloudHSM 根证书验证 HSM 证书**

1. 导航到您将下载的[根证书](#get-root-certificates)和 [HSM 证书文件](#get-certificates)保存到的目录。以下命令假设所有证书都在当前目录中并使用默认文件名。

   使用以下命令按顺序创建包含 AWS 硬件证书和 AWS CloudHSM 根证书的证书链。*<cluster ID>*替换为您之前创建的集群的 ID。

   ```
   $ cat <cluster ID>_AwsHardwareCertificate.crt \
         AWS_CloudHSM_Root-G1.crt \
         > <cluster ID>_AWS_chain.crt
   ```

1. 使用以下 OpenSSL 命令通过 AWS 证书链验证 HSM 证书。*<cluster ID>*替换为您之前创建的集群的 ID。

   ```
   $ openssl verify -CAfile <cluster ID>_AWS_chain.crt <cluster ID>_HsmCertificate.crt
   <cluster ID>_HsmCertificate.crt: OK
   ```

**使用制造商根证书验证 HSM 证书**

1. 使用以下命令创建一个证书链，其中按该顺序包含制造商硬件证书和制造商根证书。*<cluster ID>*替换为您之前创建的集群的 ID。

   ```
   $ cat <cluster ID>_ManufacturerHardwareCertificate.crt \
         liquid_security_certificate.crt \
         > <cluster ID>_manufacturer_chain.crt
   ```

1. 使用以下 OpenSSL 命令通过制造商证书链验证 HSM 证书。*<cluster ID>*替换为您之前创建的集群的 ID。

   ```
   $ openssl verify -CAfile <cluster ID>_manufacturer_chain.crt <cluster ID>_HsmCertificate.crt
   <cluster ID>_HsmCertificate.crt: OK
   ```

## 步骤 4：提取和比较公有密钥
<a name="compare-public-keys"></a>

使用 OpenSSL 提取并比较 HSM 证书和群集 CSR 中的公有密钥以确保二者相同。

要比较公有密钥，请使用您的 Linux shell。你需要 OpenSSL，它在大多数 Linux 外壳中都可用，但此步骤 AWS CLI 不需要。外壳无需与您的 AWS 账户关联。

**提取和比较公有密钥**

1. 使用以下命令可从 HSM 证书中提取公有密钥。

   ```
   $ openssl x509 -in <cluster ID>_HsmCertificate.crt -pubkey -noout > <cluster ID>_HsmCertificate.pub
   ```

1. 使用以下命令可从群集 CSR 中提取公有密钥。

   ```
   $ openssl req -in <cluster ID>_ClusterCsr.csr -pubkey -noout > <cluster ID>_ClusterCsr.pub
   ```

1. 使用以下命令可比较公有密钥。如果公有密钥相同，以下命令不会生成任何输出。

   ```
   $ diff <cluster ID>_HsmCertificate.pub <cluster ID>_ClusterCsr.pub
   ```

在验证 HSM 的身份和真实性后，请继续[初始化集群](initialize-cluster.md)。

# 在中初始化集群 AWS CloudHSM
<a name="initialize-cluster"></a>

创建集群并在其中添加硬件安全模块 (HSM) 后 AWS CloudHSM，您可以初始化集群。完成以下主题中的步骤可初始化 群集。

**注意**  
在初始化集群之前，[请查看验证集群身份和真实性的](verify-hsm-identity.md)过程 HSMs。此过程是可选的，并且仅在初始化集群之前有效。集群初始化后，您无法使用此过程来获取证书或验证。 HSMs

**Topics**
+ [概述](#initialize-cluster-overview)
+ [步骤 1：获取集群 CSR](#get-csr)
+ [步骤 2：为您的根 CA 创建私钥](#sign-csr-create-key)
+ [步骤 3：签署 CSR](#sign-csr)
+ [步骤 4：初始化集群](#initialize)

## 概述
<a name="initialize-cluster-overview"></a>

 集群初始化过程 HSMs通过基于证书的身份验证系统建立您对集群和您的所有权和控制权。此过程以加密方式证明您是集群 HSMs 中集群的唯一所有者，并奠定了未来与您的 HSMs所有连接所需的信任基础。

 本页将向您展示如何执行以下操作：
+ 检索集群的证书签名请求 (CSR)。
+ 生成并使用私钥创建自签名根证书或证书链。
+ 签署集群的 CSR 以生成签名的 HSM 证书。
+ 使用签名的 HSM 证书和自签名证书或证书链初始化集群。

在您准备好开始使用后，请转到 [步骤 1：获取集群 CSR](#get-csr)。

## 步骤 1：获取集群 CSR
<a name="get-csr"></a>

在初始化集群之前，您必须先下载并签署由集群的第一个 HSM 生成的证书签名请求 (CSR)。如果您按照步骤操作来[验证您集群的 HSM 的身份](verify-hsm-identity.md)，则您已有 CSR 并可以签署。否则，请立即使用[AWS CloudHSM 控制台](https://console.aws.amazon.com/cloudhsm/)、[AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) 或 AWS CloudHSM API 获取 CSR。

------
#### [ Console ]

**获取 CSR (控制台)**

1. 在家中打开[https://console.aws.amazon.com/cloudhsm/主 AWS CloudHSM](https://console.aws.amazon.com/cloudhsm/home)机。

1. 选中要验证的 HSM 的集群 ID 旁边的单选按钮。

1. 选择**操作**。从下拉菜单中，选择**初始化**。

1. 如果您未完成旨在创建 HSM 的 [上一步](create-hsm.md) 操作，则请为正在创建的 HSM 选择可用区（AZ）。然后选择**创建**。

1. 在 CSR 准备就绪时，您将看到用于下载它的链接。  
![\[在 AWS CloudHSM 控制台中下载证书签名请求页面。\]](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/images/download-csr-hsm-cert.png)

1. 选择**集群 CSR** 以下载并保存 CSR。

------
#### [ AWS CLI ]

**获取 CSR ([AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/))**
+ 在命令提示符处，运行以下 **[describe-clusters](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/describe-clusters.html)** 命令，该命令将提取 CSR 并将其保存到文件。*<cluster ID>*替换为您[之前创建](create-cluster.md)的集群的 ID。

  ```
  $ aws cloudhsmv2 describe-clusters --filters clusterIds=<cluster ID> \
                                     --output text \
                                     --query 'Clusters[].Certificates.ClusterCsr' \
                                     > <cluster ID>_ClusterCsr.csr
  ```

------
#### [ AWS CloudHSM API ]

**获取企业社会责任 (AWS CloudHSM API)**

1. 发送 [https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html) 请求。

1. 从响应中提取并保存 CSR。

------

## 步骤 2：为您的根 CA 创建私钥
<a name="sign-csr-create-key"></a>

**注意**  
对于生产集群，您将要创建的密钥应使用可信的随机掩码以安全的方式创建。建议您使用安全的异地和离线 HSM 或等效对象。安全地存储密钥。密钥用于确定集群的身份以及您对集群所含集群的 HSMs 唯一控制权。  
在开发和测试期间，您可以使用任何方便的工具 (如 OpenSSL) 来创建和签署集群证书。以下示例为您展示了如何创建密钥。使用密钥创建自签名证书 (见下文) 之后，您应该以安全的方式将其存储起来。要登录您的 AWS CloudHSM 实例，证书必须存在，但私钥不存在。

下表概述了证书生成支持的算法、密钥大小和曲线。


| 算法 | 大小/曲线 | 
| --- | --- | 
| **RSA 5 PKCSv1.** |  2048、3072、4096  | 
| **RSA-PSS** |  2048、3072、4096  | 
| **ECDSA** |  prime256v1、secp384r1、secp521r1  | 
| **摘要** |  SHA-224、SHA-256、SHA-384 和 SHA-512  | 

使用以下示例命令为您的自签名 Root CA 创建私钥。

```
$ openssl genrsa -aes256 -out customerRootCA.key 2048
Generating RSA private key, 2048 bit long modulus
........+++
............+++
e is 65537 (0x10001)
Enter pass phrase for customerRootCA.key:
Verifying - Enter pass phrase for customerRootCA.key:
```

## 步骤 3：签署 CSR
<a name="sign-csr"></a>

在前面的步骤中，您检索了集群的 CSR，并为根 CA 创建了私钥。在此步骤中，您将使用私钥生成签名证书，以便对集群的 CSR 进行签名。以下主题将指导您完成使用 OpenSSL 创建单个自签名证书或证书链的过程。您不需要执行 AWS CLI 此步骤，也无需将外壳与您的 AWS 账户关联。

**重要**  
要初始化集群，您的信任锚必须符合 [RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280) 并满足以下要求：  
如果使用 X509v3 扩展，则必须存在 X509v3 基本约束扩展。
信任锚必须是自签名证书。
扩展值不能相互冲突。

选择以下方法之一来签署集群的 CSR：

### 选择您的证书方法
<a name="certificate-approach-choice"></a>

您必须选择以下两种方法之一。不要同时完成这两种方法。

**选项 A：单一自签名证书**  
创建单个自签名根证书来签署集群的 CSR。这是建立信任的最简单、最直接的方法。  
**推荐用于：**  
+ 不需要外部 PKI 的环境
+ 优先考虑简单性的测试和开发环境
前往：[创建单个自签名证书](#self-signed-certificate)

**选项 B：带有中间 CA 的证书链**  
使用中间证书颁发机构创建证书链。中间证书链允许根证书颁发机构 (CAs) 保持离线状态，同时将证书颁发委托给中间证书颁发机构，从而降低了破坏根 CA 的风险 CAs，从而提高了安全性、可扩展性和灵活性。  
**推荐用于：**  
+ 需要外部 PKI 的环境
+ 与 AWS 私有证书颁发机构 (PCA) 集成
**AWS PCA 集成示例：**您可以使用 AWS 私有证书颁发机构来创建和管理您的中间 CA 证书。这提供了自动化的证书生命周期管理，包括续订和撤销，同时保持根 CA 处于离线状态所带来的安全优势。有关 AWS PCA 的更多信息，请参阅 [AWS 私有证书颁发机构用户指南](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)。  
前往：[创建中间证书颁发机构 (ICA) 链](#certificate-chain)

### 创建单个自签名证书
<a name="self-signed-certificate"></a>

您用来为生产集群创建私有密钥的可信硬件还应提供软件工具，以使用该密钥生成自签名证书。以下示例使用 OpenSSL 和您在上一步中创建的私钥来创建自签名的根 CA 签名证书。该证书的有效期为 10 年 (3652 天)。阅读屏幕上的说明，并按照提示操作。

```
$ openssl req -new -x509 -days 3652 -key customerRootCA.key -out customerRootCA.crt
Enter pass phrase for customerRootCA.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
```

完成后，此命令将创建一个名为 `customerRootCA.crt` 的证书文件。将此证书放在要连接到 AWS CloudHSM 集群的每台主机上。如果您为文件指定了不同的名称或将其存储在与主机根不同的路径，则应相应地编辑客户端配置文件。使用您刚创建的证书和私有密钥，在下一步中签署集群证书签名请求 (CSR)。

#### 使用您的自签名根 CA 签署集群 CSR
<a name="sign-csr-sign-cluster-csr-with-root-ca"></a>

您用来为生产集群创建私有密钥的可信硬件还应提供工具，以使用该密钥签署 CSR。以下示例使用 OpenSSL 来签署集群的 CSR。以下示例命令使用自签名对 CSR 进行签名 `customerRootCA.crt`

```
$ openssl x509 -req -days 3652 -in <cluster ID>_ClusterCsr.csr \
		-CA <customerRootCA>.crt \
		-CAkey <customerRootCA>.key \
		-CAcreateserial \
		-out <cluster ID>_CustomerHsmCertificate.crt
Signature ok
subject=/C=US/ST=CA/O=Cavium/OU=N3FIPS/L=SanJose/CN=HSM:<HSM identifier>:PARTN:<partition number>, for FIPS mode
Getting CA Private Key
Enter pass phrase for <customerRootCA>.key:
```

完成后，此命令将创建一个名为 `<cluster ID>_CustomerHsmCertificate.crt` 的文件。在初始化集群时，将此文件用作签名证书。

根据根 CA 验证签名的证书（可选）：

```
$ openssl verify -purpose sslserver -CAfile customerRootCA.crt <cluster ID>_CustomerHsmCertificate.crt
<cluster ID>_CustomerHsmCertificate.crt: OK
```

使用您的自签名根 CA 生成签名的 HSM 证书后，请转至。[步骤 4：初始化集群](#initialize)

### 创建中间证书颁发机构 (ICA) 链
<a name="certificate-chain"></a>

以下示例将引导您创建长度为 2 的证书链，该链由根证书颁发机构 (CA) 和中间 CA 组成。您将首先创建自签名的根 CA 证书，然后生成由根 CA 签名的中间 CA。最后，您将使用中间 CA 签署集群的 CSR，创建一条从 HSM 证书返回根 CA 的完整信任链。这种方法通过在使用中间 CA 进行 day-to-day证书操作时使根 CA 保持离线状态来增强安全性。

**重要**  
要使用证书链初始化集群，您的证书链必须满足以下要求：  
必须对链进行排序，从签署集群 CSR 的中间 CA 开始。按照这个顺序，第一个 ICA 的发行人应该与链中下一个 ICA 的主体相匹配，依此类推。
只有根 CA 应该是自签名的，这意味着其颁发者和主体应相同。
链必须包含不超过 4 个证书（包括末尾的根 CA），并且链的总大小不得超过 16 kb（千字节）。
所有证书颁发机构 (CAs) 都应符合 [RFC 5280 指南](https://datatracker.ietf.org/doc/html/rfc5280)。

本节提供了使用两种不同方法创建中间证书颁发机构链的示例：用于生成本地证书的 OpenSSL 和用于托管证书服务的 AWS 私有证书颁发机构 (PCA)。选择最适合您的环境和安全要求的方法。

**注意**  
以下示例是一般用例，均使用最基本的配置进行了简化。对于生产环境，请查看特定于您的用例的其他配置选项和安全要求。

------
#### [ OpenSSL ]

为 CA 创建带有常用 v3 扩展名的 OpenSSL 配置文件：

```
$ cat > ca-extensions.conf <<EOF
[req]
distinguished_name = req_distinguished_name
[req_distinguished_name]
C = Country Name (2 letter code)
ST = State or Province Name (full name)
L = Locality Name (eg, city)
O = Organization Name (eg, company)
OU = Organizational Unit Name (eg, section)
CN = Common Name (e.g. server FQDN or YOUR name)
[v3_ca]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage = critical, keyCertSign, cRLSign, digitalSignature
EOF
```

使用 OpenSSL 生成自签名的根 CA：

```
$ openssl req -new -x509 -days 3652 -key customerRootCA.key -out customerRootCA.crt -extensions v3_ca -config ca-extensions.conf
Enter pass phrase for customerRootCA.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
```

生成中间 CA 密钥：

```
$ openssl genrsa -aes256 -out intermediateCA.key 2048
Generating RSA private key, 2048 bit long modulus
........+++
............+++
e is 65537 (0x10001)
Enter pass phrase for intermediateCA.key:
Verifying - Enter pass phrase for intermediateCA.key:
```

创建中间 CA 证书签名请求 (CSR)：

```
$ openssl req -new -key intermediateCA.key -out intermediateCA.csr
Enter pass phrase for intermediateCA.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
```

使用自签名的根 CA 创建中间 CA 证书：

```
$ openssl x509 -req -in intermediateCA.csr \
		-CA customerRootCA.crt \
		-CAkey customerRootCA.key \
		-CAcreateserial \
		-days 3652 \
		-extensions v3_ca \
		-extfile ca-extensions.conf \
		-out intermediateCA.crt

Certificate request self-signature ok
subject=C= , ST= , L= , O= , OU=
```

将证书合并成一个链文件：

```
$ cat intermediateCA.crt customerRootCA.crt > chainCA.crt

-----BEGIN CERTIFICATE-----
[Intermediate CA]
-----END CERTIFICATE-----
...
...
-----BEGIN CERTIFICATE-----
[Root CA]
-----END CERTIFICATE-----
```

使用您的中间 CA 签署集群 CSR：

```
$ openssl x509 -req -days 3652 -in <cluster ID>_ClusterCsr.csr \
			-CA intermediateCA.crt \
			-CAkey intermediateCA.key \
			-CAcreateserial \
			-out <cluster ID>_CustomerHsmCertificate.crt
Signature ok
subject=/C=US/ST=CA/O=Cavium/OU=N3FIPS/L=SanJose/CN=HSM:<HSM identifier>:PARTN:<partition number>, for FIPS mode
Getting CA Private Key
Enter pass phrase for intermediateCA.key:
```

------
#### [ AWS PCA ]

使用 AWS 私有证书颁发机构创建并激活根 CA：

```
$ # 1. Create Root CA
aws acm-pca create-certificate-authority \
    --certificate-authority-configuration \
        "KeyAlgorithm=RSA_4096,
        SigningAlgorithm=SHA256WITHRSA,
        Subject={Country=US,Organization=MyOrg,OrganizationalUnit=IT,CommonName=RootCA}" \
    --certificate-authority-type ROOT

# Store the Root CA Authority ARN from the previous output
ROOT_CA_AUTHORITY_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<ca-authority-id>"

# 2. Generate Root CA CSR
aws acm-pca get-certificate-authority-csr \
    --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \
    --output text > customerRootCA.csr

# 3. Self-sign Root CA Certificate
aws acm-pca issue-certificate \
    --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \
    --csr fileb://customerRootCA.csr \
    --signing-algorithm SHA256WITHRSA \
	--template-arn arn:aws:acm-pca:::template/RootCACertificate/V1 \
    --validity Value=3652,Type=DAYS

# Store the Root CA certificate ARN from the previous output
ROOT_CA_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<ca-authority-id>/certificate/<cert-id>"

# 4. Retrieve the Root CA certificate
aws acm-pca get-certificate \
    --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \
    --certificate-arn $ROOT_CA_ARN \
    --output text > customerRootCA.crt

# 5. Import the Root CA Certificate
aws acm-pca import-certificate-authority-certificate \
    --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \
    --certificate fileb://customerRootCA.crt
```

创建并激活从属 CA（也称为中间 CA）：

```
$ # 6. Create Subordinate CA
aws acm-pca create-certificate-authority \
    --certificate-authority-configuration \
        "KeyAlgorithm=RSA_4096,
        SigningAlgorithm=SHA256WITHRSA,
        Subject={Country=US,Organization=MyOrg,OrganizationalUnit=IT,CommonName=SubordinateCA}" \
    --certificate-authority-type SUBORDINATE

# Store the Subordinate CA Authority ARN from the previous output
SUB_CA_AUTHORITY_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<sub-ca-authority-id>"

# 7. Generate Subordinate CA CSR
aws acm-pca get-certificate-authority-csr \
    --certificate-authority-arn $SUB_CA_AUTHORITY_ARN \
    --output text > intermediateCA.csr

# 8. Issue Subordinate CA Certificate using Root CA
aws acm-pca issue-certificate \
    --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \
    --csr fileb://intermediateCA.csr \
    --signing-algorithm SHA256WITHRSA \
    --template-arn arn:aws:acm-pca:::template/SubordinateCACertificate_PathLen0/V1 \
    --validity Value=3651,Type=DAYS

# Store the Subordinate CA certificate ARN from the previous output
SUB_CA_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<sub-ca-authority-id>"

# 9. Retrieve Subordinate CA Certificate
aws acm-pca get-certificate \
    --certificate-authority-arn $ROOT_CA_AUTHORITY_ARN \
    --certificate-arn $SUB_CA_ARN \
    --query 'Certificate' \
    --output text > intermediateCA.crt

# 10. Import the Subordinate CA Certificate
aws acm-pca import-certificate-authority-certificate \
    --certificate-authority-arn $SUB_CA_AUTHORITY_ARN \
    --certificate fileb://intermediateCA.crt \
    --certificate-chain fileb://customerRootCA.crt
```

将证书合并成一个链文件：

```
$ cat intermediateCA.crt customerRootCA.crt > chainCA.crt

-----BEGIN CERTIFICATE-----
[Intermediate CA]
-----END CERTIFICATE-----
...
...
-----BEGIN CERTIFICATE-----
[Root CA]
-----END CERTIFICATE-----
```

使用 AWS PCA 签署集群 CSR：

```
$ aws acm-pca issue-certificate \
    --certificate-authority-arn $SUB_CA_AUTHORITY_ARN \
    --csr fileb://<cluster ID>_ClusterCsr.csr \
    --signing-algorithm SHA256WITHRSA \
    --template-arn arn:aws:acm-pca:::template/EndEntityCertificate/V1 \
    --validity Value=3650,Type=DAYS

# Store your cluster's cert ARN from the previous output
CLUSTER_CERT_ARN="arn:aws:acm-pca:<region>:<account-id>:certificate-authority/<cluster-cert-arn>"
```

下载已签名的集群证书：

```
$ aws acm-pca get-certificate \
    --certificate-authority-arn $SUB_CA_AUTHORITY_ARN \
    --certificate-arn $CLUSTER_CERT_ARN \
    --output text --query Certificate > <cluster ID>_CustomerHsmCertificate.crt
```

------

完成后，此命令将创建一个名为 `<cluster ID>_CustomerHsmCertificate.crt` 的文件。在初始化集群时，将此文件用作签名证书。

根据证书链验证签名的证书（可选）：

```
$ openssl verify -purpose sslserver -CAfile chainCA.crt <cluster ID>_CustomerHsmCertificate.crt
<cluster ID>_CustomerHsmCertificate.crt: OK
```

使用中间 CA 生成签名的 HSM 证书后，请转至。[步骤 4：初始化集群](#initialize)

## 步骤 4：初始化集群
<a name="initialize"></a>

使用已签名 HSM 证书和您的签名证书来初始化集群。您可以使用[AWS CloudHSM 控制台[AWS CLI](https://aws.amazon.com/cli/)](https://console.aws.amazon.com/cloudhsm/)、或 AWS CloudHSM API。

------
#### [ Console ]

**初始化群集（控制台）**

1. 在家中打开[https://console.aws.amazon.com/cloudhsm/主 AWS CloudHSM](https://console.aws.amazon.com/cloudhsm/home)机。

1. 选中要验证的 HSM 的集群 ID 旁边的单选按钮。

1. 选择**操作**。从下拉菜单中，选择**初始化**。

1. 如果您未完成旨在创建 HSM 的 [上一步](create-hsm.md) 操作，则请为正在创建的 HSM 选择可用区（AZ）。然后选择 **创建**。

1. 在**下载证书签名请求**页面上，选择**下一步**。如果**下一步**不可用，请先选择一个 CSR 或证书链接。然后选择**下一步**。

1. 在**签署证书签名请求（CSR）**页面上，选择**下一步**。

1. 在**上传证书**页面上，执行以下操作：

   1. 在**集群证书**旁边，选择**上传文件**。然后找到并选中您之前签署的 HSM 证书。如果您完成了以上部分中的步骤，请选择名为 `<cluster ID>_CustomerHsmCertificate.crt` 的文件。

   1. 在**颁发证书**旁边，选择**上传文件**。然后根据您选择的方法选择您的签名证书：
      + **如果您选择了选项 A（单一自签名证书）：**请选择名为的文件 `<customerRootCA>.crt`
      + **如果您选择了选项 B（证书链）：**请选择名为的文件 `<chainCA>.crt`

   1. 选择**上传并初始化**。

------
#### [ AWS CLI ]

**初始化群集 ([AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/))**
+ 在命令提示符下，运行 **[initialize-cluster](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/initialize-cluster.html)** 命令。提供以下项：
  + 您之前创建的集群的 ID。
  + 您之前签署的 HSM 证书。如果您完成了以上部分中的步骤，它保存在名为 `<cluster ID>_CustomerHsmCertificate.crt` 的文件中。
  + 您的签名证书基于您选择的方法：
    + **如果您选择了选项 A（单一自签名证书）：**请使用名为的文件 `<customerRootCA>.crt`
    + **如果您选择了选项 B（证书链）：**请使用名为的文件 `<chainCA>.crt`

  ```
  $ aws cloudhsmv2 initialize-cluster --cluster-id <cluster ID> \
                                      --signed-cert file://<cluster ID>_CustomerHsmCertificate.crt \
                                      --trust-anchor file://<customerRootCA.crt OR chainCA.crt>
  {
      "State": "INITIALIZE_IN_PROGRESS",
      "StateMessage": "Cluster is initializing. State will change to INITIALIZED upon completion."
  }
  ```

------
#### [ AWS CloudHSM API ]

**初始化集群 (AWS CloudHSM API)**
+ 使用以下内容发送 [https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_InitializeCluster.html](https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_InitializeCluster.html) 请求：
  + 您之前创建的集群的 ID。
  + 您之前签署的 HSM 证书。如果您完成了以上部分中的步骤，它保存在名为 `<cluster ID>_CustomerHsmCertificate.crt` 的文件中。
  + 您的签名证书基于您选择的方法：
    + **如果您选择了选项 A（单一自签名证书）：**请使用名为的文件 `<customerRootCA>.crt`
    + **如果您选择了选项 B（证书链）：**请使用名为的文件 `<chainCA>.crt`

------

# 安装和配置 CloudHSM CLI
<a name="gs_cloudhsm_cli-install"></a>

要与 AWS CloudHSM 集群中的 HSM 进行交互，你需要 CloudHSM CLI。

连接到您的客户端实例并运行以下命令来下载和安装 AWS CloudHSM 命令行工具。有关更多信息，请参阅 [启动用于与之交互的 Amazon EC2 客户端实例 AWS CloudHSM](launch-client-instance.md)。

------
#### [ Amazon Linux 2023 ]

x86\$164 架构上的 Amazon Linux 2023：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-cli-latest.amzn2023.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.amzn2023.x86_64.rpm
```

关于 ARM64 架构的亚马逊 Linux 2023：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-cli-latest.amzn2023.aarch64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.amzn2023.aarch64.rpm
```

------
#### [ Amazon Linux 2 ]

x86\$164 架构上的 Amazon Linux 2：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-cli-latest.el7.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.el7.x86_64.rpm
```

关于 ARM64 架构的亚马逊 Linux 2：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-cli-latest.el7.aarch64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.el7.aarch64.rpm
```

------
#### [ RHEL 10 (10.0\$1) ]

x86\$164 架构上的 RHEL 10：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-cli-latest.el10.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.el10.x86_64.rpm
```

关于 ARM64 建筑的 RHEL 10：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-cli-latest.el10.aarch64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.el10.aarch64.rpm
```

------
#### [ RHEL 9 (9.2\$1) ]

x86\$164 架构上的 RHEL 9：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-cli-latest.el9.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.el9.x86_64.rpm
```

关于 ARM64 建筑的 RHEL 9：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-cli-latest.el9.aarch64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.el9.aarch64.rpm
```

------
#### [ RHEL 8 (8.3\$1) ]

x86\$164 架构上的 RHEL 8：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-cli-latest.el8.x86_64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.el8.x86_64.rpm
```

关于 ARM64 建筑的 RHEL 8：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-cli-latest.el8.aarch64.rpm
```

```
$ sudo yum install ./cloudhsm-cli-latest.el8.aarch64.rpm
```

------
#### [ Ubuntu 24.04 LTS ]

x86\$164 架构上的 Ubuntu 24.04 LTS：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-cli_latest_u24.04_amd64.deb
```

```
$ sudo apt install ./cloudhsm-cli_latest_u24.04_amd64.deb
```

Ubuntu 24.04 LTS 关于架构： ARM64 

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-cli_latest_u24.04_arm64.deb
```

```
$ sudo apt install ./cloudhsm-cli_latest_u24.04_arm64.deb
```

------
#### [ Ubuntu 22.04 LTS ]

x86\$164 架构上的 Ubuntu 22.04 LTS：

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-cli_latest_u22.04_amd64.deb
```

```
$ sudo apt install ./cloudhsm-cli_latest_u22.04_amd64.deb
```

Ubuntu 22.04 LTS 论架构： ARM64 

```
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-cli_latest_u22.04_arm64.deb
```

```
$ sudo apt install ./cloudhsm-cli_latest_u22.04_arm64.deb
```

------
#### [ Windows Server 2022 ]

对于 x86\$164 架构上的 Windows Server 2022，请 PowerShell 以管理员身份打开并运行以下命令：

```
PS C:\> wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMCLI-latest.msi -Outfile C:\AWSCloudHSMCLI-latest.msi
```

```
PS C:\> Start-Process msiexec.exe -ArgumentList '/i C:\AWSCloudHSMCLI-latest.msi /quiet /norestart /log C:\client-install.txt' -Wait
```

------
#### [ Windows Server 2019 ]

对于 x86\$164 架构上的 Windows Server 2019，请 PowerShell 以管理员身份打开并运行以下命令：

```
PS C:\> wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMCLI-latest.msi -Outfile C:\AWSCloudHSMCLI-latest.msi
```

```
PS C:\> Start-Process msiexec.exe -ArgumentList '/i C:\AWSCloudHSMCLI-latest.msi /quiet /norestart /log C:\client-install.txt' -Wait
```

------
#### [ Windows Server 2016 ]

对于 x86\$164 架构上的 Windows Server 2016，请 PowerShell 以管理员身份打开并运行以下命令：

```
PS C:\> wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMCLI-latest.msi -Outfile C:\AWSCloudHSMCLI-latest.msi
```

```
PS C:\> Start-Process msiexec.exe -ArgumentList '/i C:\AWSCloudHSMCLI-latest.msi /quiet /norestart /log C:\client-install.txt' -Wait
```

------

使用以下命令配置 CloudHSM CLI。

**为客户端 SDK 引导 Linux EC2 实例 5**
+  使用配置工具指定集群中 HSM 的 IP 地址。

  ```
  $ sudo /opt/cloudhsm/bin/configure-cli -a <The ENI IPv4 / IPv6 addresses of the HSMs>
  ```

**为客户端 SDK 5 引导 Windows EC2 实例**
+  使用配置工具指定集群中 HSM 的 IP 地址。

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-cli.exe" -a <The ENI IPv4 / IPv6 addresses of the HSMs>
  ```

# 在中激活集群 AWS CloudHSM
<a name="activate-cluster"></a>

激活集群时， AWS CloudHSM 集群的状态会从已初始化变为活动。然后，您可以[管理硬件安全模块 (HSM) 用户](manage-hsm-users.md)并[使用 HSM](use-hsm.md)。

**重要**  
在激活集群之前，必须先将颁发证书复制到连接到集群的每个 EC2 实例上平台的默认位置（您在初始化集群时创建颁发证书）。根据您在集群初始化期间选择的方法使用相应的证书文件：  
**如果您选择选项 A（单一自签名证书）：复制** `customerRootCA.crt`
**如果您选择选项 B（证书链）：**复制 `chainCA.crt`
**Linux 位置：**  

```
/opt/cloudhsm/etc/<customerRootCA.crt OR chainCA.crt>
```
**窗口位置：**  

```
C:\ProgramData\Amazon\CloudHSM\<customerRootCA.crt OR chainCA.crt>
```
复制证书文件后，编辑该`/opt/cloudhsm/etc/cloudhsm-cli.cfg`文件以确保证书文件名与您复制的 CA 证书的名称相匹配。

放置颁发证书后，安装 CloudHSM CLI 并在您的第一个 HSM 上运行 [**cluster activate**](cloudhsm_cli-cluster-activate.md) 命令。您会注意到集群中第一个 HSM 上的管理员账户具有[未激活的管理员](understanding-users.md)角色。这是一个临时角色，仅存在于集群激活之前。激活集群后，未激活的管理员角色将变为管理员。

**激活集群**

1. 连接到之前已启动的客户端实例。有关更多信息，请参阅 [启动用于与之交互的 Amazon EC2 客户端实例 AWS CloudHSM](launch-client-instance.md)。您可以启动 Linux 实例或 Windows Server。

1. 在交互模式下运行 CloudHSM CLI。

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. （可选）使用 **user list** 命令显示现有用户。

   ```
   aws-cloudhsm > user list
   {
     "error_code": 0,
     "data": {
       "users": [
         {
           "username": "admin",
           "role": "unactivated-admin",
           "locked": "false",
           "mfa": [],
           "cluster-coverage": "full"
         },
         {
           "username": "app_user",
           "role": "internal(APPLIANCE_USER)",
           "locked": "false",
           "mfa": [],
           "cluster-coverage": "full"
         }
       ]
     }
   }
   ```

1. 使用 **cluster activate** 命令设置初始管理员密码。

   ```
   aws-cloudhsm > cluster activate
   Enter password:<NewPassword>
   Confirm password:<NewPassword>
   {
     "error_code": 0,
     "data": "Cluster activation successful"
   }
   ```

   我们建议您在密码工作表上记下新密码。切勿丢失该工作表。我们建议您打印一份密码工作表，用它来记录您的重要 HSM 密码，然后将其存储在安全位置。此外，建议您在安全的异地存储设施中存储此工作表的一个副本。

1. （可选）使用 **user list** 命令验证用户的类型是否已更改为[管理员/CO](understanding-users-cmu.md#crypto-officer)。

   ```
   aws-cloudhsm > user list
   {
     "error_code": 0,
     "data": {
       "users": [
         {
           "username": "admin",
           "role": "admin",
           "locked": "false",
           "mfa": [],
           "cluster-coverage": "full"
         },
          {
           "username": "app_user",
           "role": "internal(APPLIANCE_USER)",
           "locked": "false",
           "mfa": [],
           "cluster-coverage": "full"
         }
       ]
     }
   }
   ```

1. 使用 **quit** 命令停止 CloudHSM CLI 工具。

   ```
   aws-cloudhsm > quit
   ```

有关使用 CloudHSM CLI 或 CMU 的更多信息，请参阅[了解 HSM 用户](understanding-users.md)和 [使用 CMU 了解 HSM 用户管理](understand-users.md)。

# 在客户端和之间设置双向 TLS AWS CloudHSM （推荐）
<a name="getting-started-setup-mtls"></a>

以下主题描述了在客户端和 AWS CloudHSM之间启用相互传输层安全 (mTLS) 必须完成的步骤。

**注意事项**
+ 目前，此功能仅在 hsm2m.medium 上可用。有关 HSM 类型的更多信息，请参阅 [AWS CloudHSM 集群模式](cluster-hsm-types.md)。
+ 与一起 AWS Key Management Service使用的 AWS CloudHSM 密钥库不支持 mTLS。

**Topics**
+ [步骤 1：创建信任锚并将其注册到 HSM 上](#setup-mtls-create-and-register-trust-anchor)
+ [步骤 2：启用 mTLS AWS CloudHSM](#getting-start-setup-mtl-sdk)
+ [步骤 3：将 mTLS 的强制执行设置为 AWS CloudHSM](#getting-start-setup-mtls-enforcement)

## 步骤 1：创建信任锚并将其注册到 HSM 上
<a name="setup-mtls-create-and-register-trust-anchor"></a>

在启用 mTLS 之前，必须创建信任锚并将其注册到 HSM。这是一个包括两个步骤的过程：

**Topics**
+ [创建私有密钥和自签名根证书](#setup-mtls-create-trust-anchor)
+ [在 HSM 上注册信任锚](#setup-mtls-register-trust-anchor)

### 创建私有密钥和自签名根证书
<a name="setup-mtls-create-trust-anchor"></a>

**注意**  
对于生产集群，您将要创建的密钥应使用可信的随机掩码以安全的方式创建。建议您使用安全的异地和离线 HSM 或等效对象。安全地存储密钥。  
对于开发和测试，您可以使用任何方便的工具（例如 OpenSSL）来创建密钥并对根证书进行自签名。您需要密钥和根证书才能在[启用 mTLS 中签署客户端证书。 AWS CloudHSM](#getting-start-setup-mtl-sdk)

以下示例演示如何使用 [OpenSSL](https://www.openssl.org/) 创建私有密钥和自签名的根证书。

**Example - 使用 OpenSSL 创建私有密钥**  
使用以下命令创建已使用 AES-256 算法加密的 4096 位 RSA 密钥。要使用此示例，请*<mtls\$1ca\$1root\$11.key>*替换为要存储密钥的文件的名称。  

```
$ openssl genrsa -out <mtls_ca_root_1.key> -aes256 4096
Generating RSA private key, 4096 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
Enter pass phrase for mtls_ca_root_1.key:
Verifying - Enter pass phrase for mtls_ca_root_1.key:
```

**Example – 使用 OpenSSL 创建自签名根证书**  
使用以下命令从刚刚创建的私有密钥创建名为 `mtls_ca_root_1.crt` 的自签名根证书。该证书的有效期为 25 年（9130 天）。阅读屏幕上的说明，并按照提示操作。  

```
$ openssl req -new -x509 -days 9130 -key mtls_ca_root_1.key -out mtls_ca_root_1.crt
Enter pass phrase for mtls_ca_root_1.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
```

### 在 HSM 上注册信任锚
<a name="setup-mtls-register-trust-anchor"></a>

创建自签名根证书后，管理员必须将其注册为 AWS CloudHSM 集群的信任锚点。

**向 HSM 注册信任锚**

1. 使用以下命令启动 CloudHSM CLI。

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. 使用 CloudHSM CLI，以管理员身份登录。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. 使用 ** [使用 CloudHSM CLI 注册信任锚](cloudhsm_cli-cluster-mtls-register-trust-anchor.md) ** 命令注册信任锚。有关更多信息，请参阅以下示例或使用 **help cluster mtls register-trust-anchor** 命令。

**Example — 向集 AWS CloudHSM 群注册信任锚点**  
以下示例演示如何使用 CloudHSM CLI 中的 **cluster mtls register-trust-anchor** 命令向 HSM 注册信任锚。要使用此命令，管理员必须登录 HSM。将这些值替换为您自己的值：  

```
aws-cloudhsm > cluster mtls register-trust-anchor --path </path/mtls_ca_root_1.crt>
{
  "error_code": 0,
  "data": {
    "trust_anchor": {
      "certificate-reference": "0x01",
      "certificate": "<PEM Encoded Certificate>",
      "cluster-coverage": "full"
    }
  }
}
```
AWS CloudHSM 支持将中间证书注册为信任锚点。在这种情况下，需要将整个 PEM 编码的证书链文件注册到 HSM 上，并以分层顺序排列证书。  
 AWS CloudHSM 支持 6980 字节的证书链。
成功注册信任锚后，您可以运行 **cluster mtls list-trust-anchors** 命令来检查当前注册的信任锚，如下所示：  

```
aws-cloudhsm > cluster mtls list-trust-anchors
{
  "error_code": 0,
  "data": {
    "trust_anchors": [
      {
        "certificate-reference": "0x01",
        "certificate": "<PEM Encoded Certificate>",
        "cluster-coverage": "full"
      }
    ]
  }
}
```
 最多可以在 hsm2m.medium 上注册两个（2）个信任锚。

## 步骤 2：启用 mTLS AWS CloudHSM
<a name="getting-start-setup-mtl-sdk"></a>

要启用 mTLS AWS CloudHSM，您需要创建私钥和由我们在[创建中生成的根证书签名的客户端证书，并在 HSM 上注册信任锚点](#setup-mtls-create-and-register-trust-anchor)，然后使用任何 Client SDK 5 配置工具来设置私钥路径和客户端证书链路径。

**Topics**
+ [创建私有密钥和客户端证书链](#create-client-ssl)
+ [为 Client SDK 5 配置 mTLS](#enable-ssl-5)

### 创建私有密钥和客户端证书链
<a name="create-client-ssl"></a>

**Example - 使用 OpenSSL 创建私有密钥**  
使用以下命令创建 4096 位 RSA 密钥。要使用此示例，请*<ssl-client.key>*替换为要存储密钥的文件的名称。  

```
$ openssl genrsa -out <ssl-client.key> 4096
Generating RSA private key, 4096 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
```

**Example – 使用 OpenSSL 生成证书签名请求（CSR）**  
使用以下命令从您刚刚创建的私有密钥生成证书签名请求（CSR）。阅读屏幕上的说明，并按照提示操作。  

```
$ openssl req -new -key <ssl-client.key> -out <ssl-client.csr>
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
```

**Example – 使用根证书签署 CSR**  
使用以下命令通过我们在[创建信任锚并将其注册到 HSM 上](#setup-mtls-create-and-register-trust-anchor)中创建和注册的根证书对 CSR 进行签名，并创建名为 `ssl-client.crt` 的客户端证书。该证书的有效期为 5 年（1826 天）。  

```
$ openssl x509 -req -days 1826 -in <ssl-client.csr> -CA <mtls_ca_root_1.crt> -CAkey <mtls_ca_root_1.key> -CAcreateserial -out <ssl-client.crt>
```

**Example – 创建客户端证书链**  
使用以下命令将我们在[创建信任锚并将其注册到 HSM 上](#setup-mtls-create-and-register-trust-anchor)中创建并注册的客户端证书和根证书结合起来，创建一个名为 `ssl-client.pem` 的客户端证书链，该证书链将在下一步的配置中使用。  

```
$ cat <ssl-client.crt> <mtls_ca_root_1.crt> > <ssl-client.pem>
```
 如果您将[创建信任锚并将其注册到 HSM 上](#setup-mtls-create-and-register-trust-anchor)中的中间证书注册为信任锚，请确保将客户端证书与整个证书链相结合以创建客户端证书链。

### 为 Client SDK 5 配置 mTLS
<a name="enable-ssl-5"></a>

使用任何 Client SDK 5 configure 工具通过提供正确的客户端密钥路径和客户端证书链路径启用双向 TLS。有关 Client SDK 5 的 configure 工具的更多信息，请参阅 [AWS CloudHSM 客户端 SDK 5 配置工具](configure-sdk-5.md)。

------
#### [ PKCS \$111 library ]

**在 Linux 上对 Client SDK 5 使用自定义证书和密钥进行 TLS 客户端-HSM 双向身份验证**

1. 将您的密钥和证书复制到相应目录。

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   $ sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  使用配置工具指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   $ sudo /opt/cloudhsm/bin/configure-pkcs11 \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**在 Windows 上对 Client SDK 5 使用自定义证书和密钥进行 TLS 客户端-HSM 双向身份验证**

1. 将您的密钥和证书复制到相应目录。

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  使用 PowerShell 解释器，使用配置工具指定`ssl-client.pem`和`ssl-client.key`。

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ OpenSSL Dynamic Engine ]

**在 Linux 上对 Client SDK 5 使用自定义证书和密钥进行 TLS 客户端-HSM 双向身份验证**

1. 将您的密钥和证书复制到相应目录。

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  使用配置工具指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   $ sudo /opt/cloudhsm/bin/configure-dyn \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

------
#### [ Key Storage Provider (KSP) ]

**在 Windows 上对 Client SDK 5 使用自定义证书和密钥进行 TLS 客户端-HSM 双向身份验证**

1. 将您的密钥和证书复制到相应目录。

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  使用 PowerShell 解释器，使用配置工具指定`ssl-client.pem`和`ssl-client.key`。

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-ksp.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ JCE provider ]

**在 Linux 上对 Client SDK 5 使用自定义证书和密钥进行 TLS 客户端-HSM 双向身份验证**

1. 将您的密钥和证书复制到相应目录。

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  使用配置工具指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   $ sudo /opt/cloudhsm/bin/configure-jce \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**在 Windows 上对 Client SDK 5 使用自定义证书和密钥进行 TLS 客户端-HSM 双向身份验证**

1. 将您的密钥和证书复制到相应目录。

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  使用 PowerShell 解释器，使用配置工具指定`ssl-client.pem`和`ssl-client.key`。

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ CloudHSM CLI ]

**在 Linux 上对 Client SDK 5 使用自定义证书和密钥进行 TLS 客户端-HSM 双向身份验证**

1. 将您的密钥和证书复制到相应目录。

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  使用配置工具指定 `ssl-client.pem` 和 `ssl-client.key`。

   ```
   $ sudo /opt/cloudhsm/bin/configure-cli \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**在 Windows 上对 Client SDK 5 使用自定义证书和密钥进行 TLS 客户端-HSM 双向身份验证**

1. 将您的密钥和证书复制到相应目录。

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  使用 PowerShell 解释器，使用配置工具指定`ssl-client.pem`和`ssl-client.key`。

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-cli.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------

## 步骤 3：将 mTLS 的强制执行设置为 AWS CloudHSM
<a name="getting-start-setup-mtls-enforcement"></a>

使用任何客户端 SDK 5 配置工具进行配置后，客户端与 AWS CloudHSM 集群中的双向 TLS 连接。但是，从配置文件中删除私有密钥路径和客户端证书链路径将使连接再次转变为常规 TLS。您可以使用 CloudHSM CLI 通过完成以下步骤在集群中设置 mtls 强制执行：

1. 使用以下命令启动 CloudHSM CLI。

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. 使用 CloudHSM CLI，以管理员身份登录。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```
**注意**  
 1. 确保您已配置 CloudHSM CLI 并在 mTLS 连接下启动 CloudHSM CLI。  
 2. 在设置 mTLS 强制执行之前，必须以用户名为 **admin** 的默认管理员用户身份登录。

1. 使用 ** [使用 CloudHSM CLI 设置 mTLS 的强制执行级别](cloudhsm_cli-cluster-mtls-set-enforcement.md) ** 命令来设置强制执行。有关更多信息，请参阅以下示例或使用 **help cluster mtls set-enforcement** 命令。  
**Example — 使用集群设置 mTLS AWS CloudHSM 强制执行**  

   以下示例演示如何使用 CloudHSM CLI 中的 **cluster mtls set-enforcement** 命令为 HSM 设置 mTLS 强制执行。要使用此命令，用户名为 admin 的管理员必须登录到 HSM。

   ```
   aws-cloudhsm > cluster mtls set-enforcement --level cluster
   {
     "error_code": 0,
     "data": {
       "message": "Mtls enforcement level set to Cluster successfully"
     }
   }
   ```
**警告**  
在集群中强制执行 mTLS 使用后，所有现有非 mTLS 连接都将被丢弃，并且您只能使用 mTLS 证书连接到集群。

# 在中创建和使用密钥 AWS CloudHSM
<a name="create-apps"></a>

[在新集群中创建和使用密钥之前，请先使用 C AWS loudHSM CLI 创建硬件安全模块 (HSM) 用户。有关更多信息，[请参阅了解 HSM 用户管理任务、AWS CloudHSM](understand-users.md)[命令行界面 (CLI) 入门以及如何管理 HSM](cloudhsm_cli-getting-started.md) 用户。](manage-hsm-users.md)

**注意**  
如果使用客户端软件开发工具包 3，请使用 [CloudHSM 管理实用程序（CMU）](cloudhsm_mgmt_util.md)而不是 CloudHSM CLI。

创建 HSM 用户后，可以使用以下任一选项登录 HSM 并管理密钥：
+ 使用[密钥管理实用程序，即命令行工具](key_mgmt_util-getting-started.md)
+ 使用 [PKCS \$111 库](pkcs11-library.md)构建 C 应用程序
+ 使用 [JCE 提供程序](java-library.md)构建 Java 应用程序
+ 使用[直接从命令行中使用 OpenSSL 动态引擎](openssl-library.md)
+ 使用 OpenSSL 动态引擎以及 [NGINX 和 Apache Web 服务器](ssl-offload.md)进行 TLS 分载
+ 使用[微软 Windows 服务器证书颁发机构 (CA) AWS CloudHSM 的密钥存储提供程序 (](win-ca-overview-sdk5.md)KSP)
+ 将密钥存储提供程序 (KSP) AWS CloudHSM 与 [Microsoft 签名](signtool-sdk5.md)工具配合使用
+ 使用密钥存储提供程序（KSP）以结合使用 TLS 分载与[互联网信息服务器（IIS）Web 服务器](ssl-offload.md)