

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

# 使用微软清单生成和编辑工具 (Mage.exe) 对文件 AWS CloudHSM 进行签名
<a name="third-magetool"></a>

**注意**  
AWS CloudHSM 仅支持适用于.NET Framework 4.8.1 及更高版本的 Windows SDK 中包含的 64 位 Mage 工具。

以下主题概述了如何将 [Mage.exe](https://learn.microsoft.com/en-us/dotnet/framework/tools/mage-exe-manifest-generation-and-editing-tool) 与配合使用 AWS CloudHSM。

**Topics**
+ [步骤 1：设置先决条件](#magetool-prereqs)
+ [步骤 2：创建签名请求](#magetool-csr)
+ [步骤 3：对文件进行签名](#magetool-sign)

## 步骤 1：设置先决条件
<a name="magetool-prereqs"></a>

要将 Microsoft Mage.exe 与配合使用 AWS CloudHSM，你需要满足以下条件：
+ 运行 Windows 操作系统的亚马逊 EC2 实例
+ 一个证书颁发机构（CA），自我维护或来自第三方提供商
+ 与您的 EC2 实例位于同一个虚拟私有云 (VPC) 中的活动 AWS CloudHSM 集群，且至少有一个 HSM
+ 在 AWS CloudHSM 集群中拥有和管理密钥的加密用户 (CU)
+ 未签名文件或可执行文件
+ Microsoft Windows 软件开发工具包（SDK）

**设置 AWS CloudHSM 与 Mage.exe 一起使用的先决条件**

1. 按照本指南[入门部分中的说明启动](getting-started.md) Windows EC2 实例和 AWS CloudHSM 集群。

1. 如果你想托管自己的 Windows Server CA，请[使用完成将 Windows 服务器配置为证书颁发机构](win-ca-overview-sdk5.md)中的步骤 1 和步骤 2 AWS CloudHSM。否则，请使用您的公开可信的第三方 CA。

1. 在你的 Windows EC2 实例上下载并安装适用于.NET Framework 4.8.1 或更高版本的微软 Windows SDK：
   + [Microsoft Windows 开发工具包 10](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)

   `mage.exe` 可执行文件是 Windows SDK 工具的一部分。默认安装位置是：

   ```
   C:\Program Files (x86)\Windows Kits\{{<SDK version>}}\bin\{{<version number>}}\x64\Mage.exe
   ```

完成这些步骤后，你可以使用 Microsoft Windows SDK、你的 AWS CloudHSM 集群和你的 CA 来[创建签名证书](#magetool-csr)。

## 步骤 2：创建签名请求
<a name="magetool-csr"></a>

现在，您已经在 EC2 实例上安装了 Windows 软件开发工具包，您可以使用它来生成证书签名请求 (CSR)。CSR 是未签名的证书，您将其提交给您的 CA 进行签名。在此示例中，我们使用 Windows SDK 中包含的 `certreq` 可执行文件来生成 CSR。

**使用 certreq 可执行文件生成 CSR**

1. 连接到你的 Windows EC2 实例。有关更多信息，请参阅 *Amazon EC2 用户指南*中的 [Connect 到您的实例](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)。

1. 使用以下内容创建名为 `request.inf` 的文件。将 `Subject` 信息替换为贵组织的详细信息：

   ```
   [Version]
   Signature= $Windows NT$
   [NewRequest]
   Subject = "C={{<Country>}},CN={{<www.website.com>}},O={{<Organization>}},OU={{<Organizational-Unit>}},L={{<City>}},S={{<State>}}"
   RequestType=PKCS10
   HashAlgorithm = SHA256
   KeyAlgorithm = RSA
   KeyLength = 2048
   ProviderName = "CloudHSM Key Storage Provider"
   KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE"
   MachineKeySet = True
   Exportable = False
   ```

   有关每个参数的说明，请参阅 [Microsoft 的文档](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1#BKMK_New)。

1. 运行 `certreq.exe` 生成 CSR：

   ```
   certreq.exe -new request.inf request.csr
   ```

   此命令在您的 AWS CloudHSM 集群上生成新的密钥对，并使用私钥创建 CSR。

1. 将 CSR 提交给 CA。如果您使用的是 Windows Server CA，请执行以下步骤：

   1. 打开 CA 工具：

      ```
      certsrv.msc
      ```

   1. 在新窗口中，右键单击 CA 服务器的名称。选择**所有任务**，然后选择**提交新请求**。

   1. 导航到 `request.csr` 的位置，然后选择**打开**。

   1. 展开 **Server CA** 菜单，导航到**待处理请求**文件夹。右键单击您刚刚创建的请求，选择**所有任务**，然后选择**颁发**。

   1. 导航到**已颁发的证书**文件夹。

   1. 选择**打开**以查看证书，然后选择**详细信息**选项卡。

   1. 选择**复制到文件**以启动证书导出向导。将经 DER 编码的 X.509 文件作为 `signedCertificate.cer` 保存到安全位置。

   1. 退出 CA 工具并使用以下命令，将证书文件移动到 Windows 中的个人证书存储。

      ```
      certreq.exe -accept signedCertificate.cer
      ```

现在，可以使用导入的证书[对文件进行签名](#magetool-sign)。

## 步骤 3：对文件进行签名
<a name="magetool-sign"></a>

现在，您已拥有 Mage.exe 和导入的证书，可以对文件进行签名了。您需要知道证书的 SHA-1 哈希或*指纹*。指纹可确保 Mage.exe 仅使用经过 AWS CloudHSM验证的证书。在此示例中，我们使用 PowerShell 获取证书的哈希值。

**获取证书的指纹并使用它来对文件进行签名**

1. 导航到含有 `mage.exe` 的目录。默认位置是：

   ```
   C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\x64
   ```

1. 要使用 Mage.exe 创建示例应用程序文件，请运行以下命令：

   ```
   mage.exe -New Application -ToFile C:\Users\Administrator\Desktop\sample.application
   ```

1. 以管理员 PowerShell 身份打开并运行以下命令：

   ```
   Get-ChildItem -path cert:\LocalMachine\My
   ```

   从输出中复制 `Thumbprint`、`Key Container` 和 `Provider` 值。  
![证书的哈希将在输出中显示为指纹、密钥容器和提供商](http://docs.aws.amazon.com/zh_cn/cloudhsm/latest/userguide/images/certstore-my-certificate.png)

1. 通过运行以下命令对文件进行签名：

   ```
   mage.exe -Sign -CertHash {{<thumbprint>}} -KeyContainer {{<keycontainer>}} -CryptoProvider {{<CloudHSM Key Storage Provider/Cavium Key Storage Provider>}} C:\Users\Administrator\Desktop\{{<sample.application>}}
   ```

   如果命令成功，则 PowerShell 返回成功消息。

1. 要验证文件上的签名，请使用以下命令：

   ```
   mage.exe -Verify -CryptoProvider {{<CloudHSM Key Storage Provider/Cavium Key Storage Provider>}} C:\Users\Administrator\Desktop\{{<sample.application>}}
   ```