选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用微软 SignTool 和客户端 SDK 5 来签署文件

聚焦模式
使用微软 SignTool 和客户端 SDK 5 来签署文件 - AWS CloudHSM

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

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

在加密和公有密钥基础结构 (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)。

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

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

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

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

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

    SignTool 可执行文件是 Windows SDK Signing Tools for Desktop Apps 安装功能的一部分。您可以省略要安装的其他功能(如果您不需要它们)。默认安装位置是:

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

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

步骤 2:创建签名请求

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

使用 certreq 可执行文件生成 CSR
  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 = "CloudHSM 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 开发工具包的 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
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。