

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

# 在 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\_CloudHSM\_Root-G1.zip](samples/AWS_CloudHSM_Root-G1.zip)

1. 下载适合您的 HSM 类型的制造商根证书：
   + hsm1.medium 制造商根证书：[liquid\_security\_certificate.zip](https://www.marvell.com/content/dam/marvell/en/public-collateral/security-solutions/liquid_security_certificate.zip)
   + hsm2m.medium 制造商根证书：[liquid\_security\_certificate.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)。