将 Microsoft 清单生成和编辑工具(Mage.exe)与 AWS CloudHSM 结合使用对文件进行签名
注意
AWS CloudHSM 仅支持适用于 .NET Framework 4.8.1 及更高版本的 Windows SDK 中包含的 64 位 Mage 工具。
以下主题概述如何将 Mage.exe
步骤 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 结合使用的先决条件
-
按照本指南的入门部分中的说明进行操作,启动 Windows EC2 实例和 AWS CloudHSM 集群。
-
如果您想托管自己的 Windows Server CA,请完成使用 AWS CloudHSM 将 Windows Server 配置为证书颁发机构中的步骤 1 和 2。否则,请使用您的公开可信的第三方 CA。
-
在您的 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
-
连接到您的 Windows EC2 实例。有关详细信息,请参阅《Amazon EC2 用户指南》中的连接到您的实例。
-
使用以下内容创建名为
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 的文档
。 -
运行
certreq.exe生成 CSR:certreq.exe -new request.inf request.csr此命令在您的 AWS CloudHSM 集群上生成新的密钥对,并使用私有密钥创建 CSR。
-
将 CSR 提交给 CA。如果您使用的是 Windows Server CA,请执行以下步骤:
-
打开 CA 工具:
certsrv.msc -
在新窗口中,右键单击 CA 服务器的名称。选择所有任务,然后选择提交新请求。
-
导航到
request.csr的位置,然后选择打开。 -
展开 Server CA 菜单,导航到待处理请求文件夹。右键单击您刚刚创建的请求,选择所有任务,然后选择颁发。
-
导航到已颁发的证书文件夹。
-
选择打开以查看证书,然后选择详细信息选项卡。
-
选择复制到文件以启动证书导出向导。将经 DER 编码的 X.509 文件作为
signedCertificate.cer保存到安全位置。 -
退出 CA 工具并使用以下命令,将证书文件移动到 Windows 中的个人证书存储。
certreq.exe -accept signedCertificate.cer
-
现在,可以使用导入的证书对文件进行签名。
步骤 3:对文件进行签名
现在,您已拥有 Mage.exe 和导入的证书,可以对文件进行签名了。您需要知道证书的 SHA-1 哈希或指纹。指纹可确保 Mage.exe 仅使用经过 AWS CloudHSM 验证的证书。在此示例中,我们使用 PowerShell 获取证书的哈希。
获取证书的指纹并使用它来对文件进行签名
-
导航到含有
mage.exe的目录。默认位置是:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools\x64 -
要使用 Mage.exe 创建示例应用程序文件,请运行以下命令:
mage.exe -New Application -ToFile C:\Users\Administrator\Desktop\sample.application -
以管理员身份打开 PowerShell 并运行以下命令:
Get-ChildItem -path cert:\LocalMachine\My从输出中复制
Thumbprint、Key Container和Provider值。
-
通过运行以下命令对文件进行签名:
mage.exe -Sign -CertHash<thumbprint>-KeyContainer<keycontainer>-CryptoProvider<CloudHSM Key Storage Provider/Cavium Key Storage Provider>C:\Users\Administrator\Desktop\<sample.application>如果命令成功,则 PowerShell 将返回成功消息。
-
要验证文件上的签名,请使用以下命令:
mage.exe -Verify -CryptoProvider<CloudHSM Key Storage Provider/Cavium Key Storage Provider>C:\Users\Administrator\Desktop\<sample.application>