将 Microsoft 清单生成和编辑工具(Mage.exe)与 AWS CloudHSM 结合使用对文件进行签名 - AWS CloudHSM

将 Microsoft 清单生成和编辑工具(Mage.exe)与 AWS CloudHSM 结合使用对文件进行签名

注意

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

以下主题概述如何将 Mage.exe 与 AWS CloudHSM 结合使用。

步骤 1:设置先决条件

要将 Microsoft Mage.exe 与 AWS CloudHSM 结合使用,您需要:

  • 一个运行 Windows 操作系统的 Amazon EC2 实例

  • 一个证书颁发机构(CA),自我维护或来自第三方提供商

  • 与 EC2 实例相同的虚拟私有云(VPC)中的活动 AWS CloudHSM 集群,至少具有一个 HSM

  • 拥有和管理 AWS CloudHSM 集群中的密钥的加密用户(CU)

  • 未签名文件或可执行文件

  • Microsoft Windows 软件开发工具包(SDK)

设置将 AWS CloudHSM 与 Mage.exe 结合使用的先决条件
  1. 按照本指南的入门部分中的说明进行操作,启动 Windows EC2 实例和 AWS CloudHSM 集群。

  2. 如果您想托管自己的 Windows Server CA,请完成使用 AWS CloudHSM 将 Windows Server 配置为证书颁发机构中的步骤 1 和 2。否则,请使用您的公开可信的第三方 CA。

  3. 在您的 Windows EC2 实例上下载并安装适用于 .NET Framework 4.8.1 或更高版本的 Microsoft Windows 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 创建签名证书

步骤 2:创建签名请求

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

使用 certreq 可执行文件生成 CSR
  1. 连接到您的 Windows EC2 实例。有关详细信息,请参阅《Amazon EC2 用户指南》中的连接到您的实例

  2. 使用以下内容创建名为 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 的文档

  3. 运行 certreq.exe 生成 CSR:

    certreq.exe -new request.inf request.csr

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

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

    1. 打开 CA 工具:

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

    3. 导航到 request.csr 的位置,然后选择打开

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

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

    6. 选择打开以查看证书,然后选择详细信息选项卡。

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

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

      certreq.exe -accept signedCertificate.cer

现在,可以使用导入的证书对文件进行签名

步骤 3:对文件进行签名

现在,您已拥有 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
  2. 要使用 Mage.exe 创建示例应用程序文件,请运行以下命令:

    mage.exe -New Application -ToFile C:\Users\Administrator\Desktop\sample.application
  3. 以管理员身份打开 PowerShell 并运行以下命令:

    Get-ChildItem -path cert:\LocalMachine\My

    从输出中复制 ThumbprintKey ContainerProvider 值。

    证书的哈希将在输出中显示为指纹、密钥容器和提供商
  4. 通过运行以下命令对文件进行签名:

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

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

  5. 要验证文件上的签名,请使用以下命令:

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