使用 Microsof AWS CloudHSM t SignTool 与签名文件 - AWS CloudHSM

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

使用 Microsof AWS CloudHSM t SignTool 与签名文件

在密码学和公钥基础设施 (PKI) 中,数字签名用于确认数据已由可信实体发送。签名还表明数据在传输过程中未被篡改。签名是使用发送方的私有密钥生成的加密哈希。接收方可以通过使用发送方的公有密钥解密其哈希签名来验证数据的完整性。反过来,发送方有责任维护数字证书。数字证书显示发送方对私有密钥的所有权,并向接收方提供解密所需的公有密钥。只要私钥归发件人所有,签名就可以被信任。 AWS CloudHSM 提供安全的 FIPS 140-2 3 级验证硬件,让您可以通过独家单租户访问来保护这些密钥。

许多组织使用 Microsoft SignTool(一种命令行工具)来签名、验证文件并给文件加上时间戳,以简化代码签名过程。您可以使用安全 AWS CloudHSM 地存储密钥对,直到需要它们为止 SignTool,从而创建易于自动化的签名数据工作流程。

以下主题概述了如何 SignTool 与一起使用 AWS CloudHSM。

步骤 1:设置先决条件

要将 Microsoft SignTool 与配合使用 AWS CloudHSM,你需要满足以下条件:

  • 运行 Windows 操作系统的亚马逊EC2客户端实例。

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

  • 与您的 AWS CloudHSM EC2实例位于同一个虚拟公有云 (VPC) 中的活动集群。集群必须至少包含一个HSM。

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

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

  • 微软 Windows 软件开发套件 (SDK)。

设置在 Windows 中使用的 AWS CloudHSM 先决条件 SignTool
  1. 按照本指南入门部分中的说明启动 Windows EC2 实例和 AWS CloudHSM 集群。

  2. 如果你想托管自己的 Windows Server CA,请按照将 Windows 服务器配置为证书颁发机构中的步骤 1 和 2 进行操作 AWS CloudHSM。否则,请继续使用您的公开可信的第三方 CA。

  3. 在你的 Windows EC2 实例SDK上下载并安装以下版本的微软 Windows:

    SignTool可执行文件是 Windows 桌面应用程序SDK签名工具安装功能的一部分。您可以省略要安装的其他功能(如果您不需要它们)。默认安装位置是:

    C:\Program Files (x86)\Windows Kits\<SDK version>\bin\<version number>\<CPU architecture>\signtool.exe

现在,你可以使用 Microsoft Windows SDK、你的 AWS CloudHSM 集群和你的 CA 来创建签名证书

步骤 2:创建签名证书

现在,您已将 Windows 下载到您的EC2实例SDK上,您可以使用它来生成证书签名请求 (CSR)。CSR是未签名的证书,最终会传递给您的 CA 进行签名。在此示例中,我们使用 Windows 附带certreq的可执行文件SDK来生成CSR。

CSR使用可certreq执行文件生成
  1. 如果你还没有这样做,请连接到你的 Windows EC2 实例。有关更多信息,请参阅 Amazon EC2 用户指南中的 Connect 到您的实例

  2. 创建一个名为 request.inf 的文件,其中包含下列行。将 Subject 信息替换为该组织的相应信息。有关每个参数的说明,请参阅 Microsoft 的文档

    [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 = Cavium Key Storage Provider KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE" MachineKeySet = True Exportable = False
  3. 运行 certreq.exe。在本示例中,我们将另存CSR为request.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. 展开服务器 CA 菜单,导航至待处理请求文件夹。右键单击您刚刚创建的请求,并在所有任务下,选择 Issue (发布)。

    5. 现在,导航到颁发的证书文件夹(位于待处理请求文件夹上)。

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

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

    8. 退出 CA 工具并使用以下命令,该命令将证书文件移动到 Windows 中的个人证书存储。然后,它可由其他应用程序使用。

      certreq.exe -accept signedCertificate.cer

现在,您可以使用导入的证书来签署文件

第 3 步:签署文件

现在,您可以使用导入 SignTool 的证书来签署示例文件。为此,你需要知道证书的 SHA -1 哈希值或指纹。指纹用于确保 SignTool仅使用经过验证的 AWS CloudHSM证书。在此示例中,我们使用 PowerShell 获取证书的哈希值。你也可以使用 CA GUI 或 Windows SDK certutil 的可执行文件。

获取证书的指纹并使用它来对文件进行签名
  1. 以管理员 PowerShell 身份打开并运行以下命令:

    Get-ChildItem -path cert:\LocalMachine\My

    复制返回的 Thumbprint

    证书的哈希将作为指纹返回
  2. 导航到其中包含 PowerShell 的目录SignTool.exe。默认位置是 C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64

  3. 最后,通过运行以下命令来对文件签名。如果命令成功,则 PowerShell 返回成功消息。

    signtool.exe sign /v /fd sha256 /sha1 <thumbprint> /sm C:\Users\Administrator\Desktop\<test>.ps1
    已对 .ps1 文件成功签名。
  4. (可选)要验证文件上的签名,请使用以下命令:

    signtool.exe verify /v /pa C:\Users\Administrator\Desktop\<test>.ps1