使用您的代码签名证书

如何通过Microsoft的SignTool和SSL.com使用OV或EV代码签名证书 SSL Manager 应用程序。
自2026年3月1日起,新的行业要求将来自…… CA /浏览器论坛 将把公开信任的代码签名证书的最长有效期限制为 458 天。为此, SSL.com 自 2026 年 2 月 27 日起,证书颁发期限将限制在 458 天以内。此项变更不会影响客户订单的总购买期限,但期限内颁发的单个证书可能需要更频繁地重新颁发。尽管每个证书的有效期缩短,客户仍将获得其购买的全部价值。所有公开信任的证书颁发机构都必须执行此项更新,旨在通过降低风险敞口和提高加密灵活性来增强安全性。

此网页提供有关使用 SSL.com 的说明 OV or EV 使用 Microsoft 的 SignTool 和 SSL.com 的代码签名证书 SSL Manager.

这些说明假定您的代码签名证书已安装,或者您已将其存储在硬件令牌上。 有关使用 eSigner 平台进行基于云的代码签名,请参阅 概述页面入学指南.

请记住,对于基于硬件的 OV 和 EV 代码签名证书,私钥 仅存在于YubiKey FIPS USB令牌上 发送给您的令牌 必须附上 到用于对应用程序进行签名的计算机。 拥有 YubiKey FIPS 令牌的 Windows 用户还应下载并安装 YubiKey 智能卡微型驱动程序 在使用他们的令牌之前。

OV 和 不应在计算机上手动安装EV代码签名证书,这可能会导致配置问题。 可以使用来自 SSL.com 的 YubiKeys 上的证书,除了安装 YubiKey 智能卡微型驱动程序 并将令牌连接到您的计算机。 通过以下方式订购的证书 远程证明 应该下载并安装在包含私钥的设备(例如YubiKey FIPS或其他受支持的硬件)上,而不是安装在计算机的证书存储上。
如果您打算使用EV代码签名证书对Windows 10驱动程序进行签名,则需要 寄存器 Windows硬件开发人员计划。
有关在Java中使用OV / IV或EV代码签名证书的说明,请参阅我们的 Java代码签名指南.

使用 Yubikey 签名可执行文件

安装 Windows SDK和SignTool

SignTool包含在其中 视窗 10 SDK。 安装后,SignTool将位于以下位置:

C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ \ x64 \ signtool.exe

通过 Powershell 或命令提示符访问 SignTool

访问 SignTool 是命令的第一部分, 签署文件验证 数字签名。Powershell 和命令提示符均可用于访问 SignTool。 

根据您使用的 Windows 操作系统版本和 Windows SDK 版本,访问 SignTool 会有所不同。以下选项之一将作为命令的第一部分包含在内: 

  1. 签名工具
  2. .\签名工具
  3. 签名工具
  4. signtool.exe
  5. “C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\signtool.exe”

请记住,私钥仅存在于发送给您的USB令牌上,并且 令牌必须附加 到用于签署应用程序的计算机。 

标志 可执行文件

您可以通过在 Powershell 窗口中发出以下命令来签署可执行文件。 

。\ signtool.exe标志/ fd sha256 / a“ C:\ path \ to \ MyExecutable.exe”
  • /fd 选项选择签名时要使用的摘要算法。 Windows 10 SDK,HLK,WDK和ADK构建 20236及以上 签名时需要设置此选项。 出于安全考虑,建议使用 SHA256 而非 SHA1。
  • /a 选项指示SignTool自动为您的可执行文件找到合适的代码签名证书。
  • 系统将提示您输入 USB 令牌的 PIN。如果您需要帮助查找 PIN,请参阅 这个方法.输入PIN码
注意: 如果您正在签名将包含在安装程序中的代码文件(例如Windows MSI文件),则需要在构建安装程序之前对这些文件进行签名,然后对安装程序文件本身进行签名。

选择签名证书

指定主题名称

如果您安装了多个代码签名USB令牌或证书,则可以 指定证书 您想通过包含它来使用 主题名称 通过 /n 选项。

您可以使用 Microsoft 的证书管理工具找到证书的主题名称 证书。从“开始”菜单打开该工具,然后在“证书”下的“个人”文件夹中查找您的证书,如下图所示。主题名称是 certmgr 中的“颁发给”字段。

在上图中,证书的主题名称为 example。 您可以使用以下命令在SignTool中指定此值。

。\ signtool.exe标志/ fd sha256 / n“示例”“ C:\ path \ to \ MyExecutable.exe”

指定SHA1哈希

如果您有多个具有相同主题名称的证书,您还可以使用证书的 SHA1 哈希(或“指纹”)来选择它进行签名。您可以按照以下说明找到此值:

通过键入打开用户证书存储 certmgr.msc 在 Windows 搜索栏中。证书管理器窗口出现后,导航到 个性化服务 文件夹,然后选择 科瑞证书 右侧的子文件夹中找到您的代码签名证书。

双击证书,转到 信息 选项卡,然后向下滚动以找到 指纹. 复制指纹并在签署代码时将其包含在命令中。 

。\ signtool.exe标志/ fd sha256 / sha1 THUMBPRINT“ C:\ path \ to \ MyExecutable.exe”

注意:由于用户拥有多个 USB 令牌,因此商店中可能会出现多个同名的代码签名证书。如果您不确定选择哪一个,请选择序列号与 SSL.com 订单详细信息页面中显示的序列号相匹配的证书。您可能希望选择到期日期最新的证书。 

 要完全验证您应该使用的证书,请按照以下说明操作:

  1. 登录您的 SSL.com 帐户并单击 订单管理 选项卡。找到您的证书订单并点击 download 链接显示您的证书的详细信息。 

  2. 向下滚动并单击 终端实体证书 部分。 在下面 代码签名证书 子部分中,您将看到证书的序列号。

  3. 进行交叉检查。双击计算机证书管理器中的证书。单击 细节。 检查序列号是否匹配。 

使用PKCS#12 / PFX文件

如果您在PKCS#12文件(也称为PFX或P12文件)中具有代码签名证书和私钥,则可以在命令行上指定文件及其密码:

。\ signtool.exe登录/ fd sha256 / f“ C:\ path \ to \ MyCertificate.pfx” / p密码“ C:\ path \ to \ MyExecutable.exe”

时间戳记

在您的代码签名证书过期后,带有时间戳记的代码将被信任。 如果您要添加 时间戳 在签名的二进制文件中,您可以使用SignTool的 /tr 选项,随后应将时间戳摘要算法设置为 /td。 以下代码段中的命令包含一个时间戳记 SSL.com签名可执行文件时的时间戳服务。

。\ signtool.exe标志/ fd sha256 / tr http://ts.ssl.com / td sha256 / a“ C:\ path \ to \ MyExecutable.exe”
注意: 确保使用SignTool的 /tr 选项(指定RFC 3161时间戳服务器的URL), 不会 /t (时间戳服务器的URL),与SSL.com的时间戳服务器不兼容。
注意:/td 选择 必须 按照 /tr 选项。 如果在时间戳服务器之前指定了时间戳摘要算法,则将使用默认的SHA-1算法。 Windows 10 SDK,HLK,WDK和ADK构建 20236及以上 需要使用 /tr 加上时间戳。 为了安全起见,建议在SHA256上使用SHA1。
注意: 默认情况下,SSL.com 支持来自 ECDSA 密钥的时间戳。

如果您遇到此错误: The timestamp certificate does not meet a minimum public key length requirement,您应该联系您的软件供应商以允许来自 ECDSA 密钥的时间戳。

如果您的软件供应商无法允许使用普通端点,您可以使用此旧版端点 http://ts.ssl.com/legacy 从 RSA 时间戳单元获取时间戳。

其他选项

其他重要的SignTool选项包括:

  • /d:添加已签名代码的描述。 例如, /d "test code".
  • /du:添加带有已签名代码的扩展描述的URL。 例如, /du https://your_website.tld/project/description.

使用上述所有选项(但省略 /a, /sha1/f 因为我们使用以下命令指定证书的使用者名称 /n,我们的命令行如下所示:

signtool.exe标志/ n“示例” / fd sha256 / tr http://ts.ssl.com / td sha256 / d“测试代码” / du https://your_website.tld/project/description“ C:\ path \ to \ MyExecutable.exe”

验证签名

使用此命令来验证您的签名代码(请注意, /pa 选项必须存在于命令中):

。\ signtool.exe验证/ pa“ C:\ path \ to \ MyExecutable.exe”

如果您的文件已成功签名,则应该看到如下输出:

文件:C:\ path \ to \ MyExecutable.exe索引算法时间戳================================== ===== 0 sha256 RFC3161已成功验证:C:\ path \ to \ MyExecutable.exe

您还可以通过右键单击文件图标并选择来验证文件是否已签名 物业 从菜单中,然后选择 数字签名 标签。 通过选择签名并单击以查看有关签名的详细信息 信息 按钮。

数字签名

在这里我们可以看到该文件包含由SSL Corp在28年2020月XNUMX日创建的有效数字签名。

数字签名详细信息

与可执行文件签署 SSL Manager

如果您更喜欢基于图形的方法,则可以使用 SSL.com的内部软件, SSL Manager,以对文件签名。 许多客户喜欢使用 SSL Manager 因为它提供了另一个好处,即可以在一个统一的界面中轻松访问所有证书。 有关下载和安装的说明 SSL Manager,请参阅我们的 安装指南.

要签名可执行文件,请先选择 代码签名>签名和时间戳代码包 ,来自 SSL Manager的菜单。

签名和时间戳代码包

在代码签名表单中,您可以选择可执行文件和代码签名证书(来自文件或证书存储)以及可用的时间戳服务器之一。 完成后,点击 标志 按钮来签署您的代码。系统将提示您输入 USB 令牌的 PIN。

除了代码签名, SSL Manager 提供许多强大的功能。 有关更多详细信息,请参阅 SSL Manager的文档,特别是 代码签名菜单.

使用 Thales SafeNet (Gemalto) USB 令牌进行代码签名

注意:SSL.com 提供的 Thales SafeNet 令牌已预装代码签名证书。请勿从令牌中删除任何材料。

本节演示如何使用 SSL.com 的代码签名证书、Thales SafeNet(Gemalto)USB 令牌和 Safenet 身份验证客户端对代码进行签名。 

Thales SafeNet 令牌可以存储所有类型的 SSL.com 代码签名证书及其私钥。其中包括个人身份代码签名证书、组织验证代码签名证书和扩展验证代码签名证书。

SafeNet Authentication Client 是一款中间件解决方案,可处理 Thales 全面的 SafeNet 基于证书的身份验证器产品组合。其中包括 eToken、SafeNet IDPrime 智能卡、SafeNet IDPrime Virtual 以及组合 PKI/FIDO 设备。

有关如何更改 Thales SafeNet(Gemalto)令牌的代码签名密码或重新获得锁定令牌的访问权限的说明,请查看此 SSL.com 文章: 如何更改 Thales SafeNet/Gemalto 令牌密码

申请条件

  1. Windows 开发工具包 安装在您的计算机上
  2. 您的计算机上已安装 SafeNet 身份验证客户端。有关说明,请参阅此 SSL.com 指南: 下载用于代码签名证书的 SafeNet 身份验证客户端
  3. 包含 SSL.com 预安装代码签名证书的 Thales SafeNet 令牌。必须按照以下步骤激活 Thales SafeNet 令牌: 
    1. 找到您的 Thales 令牌的序列号。这是印在令牌表面上的一系列字母和数字。 
    2. 登录您的 SSL.com 帐户。
    3. 点击 订单管理 标签,然后是 download 证书订单的链接以显示其详细信息。在 物理令牌 部分,通过将序列号放在指定字段上来激活您的 Thales 代币。激活 Thales 代币后, 物理令牌 部分将显示您的 激活 PIN 管理员密码。 该 激活 PIN 也称为 令牌密码 签署文件时,系统会提示您输入此信息。 管理员密码 也称为 PUK – 在锁定的令牌中设置新的令牌密码时这是必需的。 

使用 Thales SafeNet 令牌签署代码的步骤

  1. 连接您的 将 Thales SafeNet 令牌添加到您的计算机。 
  2. 可选 Safenet 身份验证客户端。
  3. 配置用于签名代码的命令:
    signtool 签名 /tr http://ts.ssl.com /td sha256 /fd sha256 /a “PATH_OF_FILE_TO_BE_SIGNED”
    传说:
    /fd sha256 选择签名时使用的摘要算法。
    / tr http://ts.ssl.com 指定时间戳服务器地址
    /td sha256 指定时间戳摘要算法
    /a 指示 SignTool 自动为您的文件找到合适的代码签名证书。

    可签名文件路径:您的文件路径应该用双引号引起来。
    请注意在路径中包含可签名文件的名称。示例:/测试文件.dll

    注意:: 某些用户在使用 sign 命令时可能会遇到此错误: “Signtool”未被识别为内部或外部命令、可操作程序或批处理文件。此错误的解决方法是删除文本 签名工具 从命令中将其替换为 signtool.exe 的路径。路径应括在双引号中。
    “C:\Program Files (x86)\Windows Kits\10\folder\folder\x86\signtool.exe” 签名 /tr http://ts.ssl.com/ /td sha256 /fd sha256 /a “C:\Users\Admin\Documents\test files\test file.dll”
  4. 运行 命令提示符 以管理员身份输入签名命令。然后按 输入.

  5. 您将看到该消息 已完成添加附加商店。 不久之后 系统将提示您放置 令牌密码. 如上所述 申请条件 令牌密码与上文相同 激活 PIN 您可以通过 SSL.com 证书订购页面查看。点击 OK 按钮完成代码签名。

  6. 成功了! 您的文件现已签名。命令提示符将通知您签名成功。 

代码签名选项

1.指定证书的主体名称

如果您拥有多个代码签名 USB 令牌或证书,则可以通过 /n 选项合并其主题名称来选择要使用的特定证书。

您可以通过单击 SafeNet 身份验证客户端中的齿轮图标来查看证书的主体名称,以允许高级视图。接下来,单击箭头 用户证书 显示令牌中安装的所有证书. 复制您要使用的证书的名称。

使用 sign 命令 /n 选项如下所示。证书的主题名称应括在双引号中。 

“SIGNTOOL.EXE 路径” sign /tr http://ts.ssl.com/ /td sha256 /fd sha256 /n “证书主题名称” “PATH_OF_FILE_TO_BE_SIGNED”

2.指定证书指纹

如果您拥有多个具有相同主题名称的证书,则可以使用其 SHA1 哈希(通常称为“指纹”)来区分和选择一个进行签名。为此,请替换 指纹 在以下命令中使用您的证书的实际 SHA1 哈希值。

您可以通过单击 SafeNet 身份验证客户端中的齿轮图标来查看证书的指纹值,以允许高级视图。接下来,单击箭头 用户证书双击要使用的证书。单击 信息 选项卡。最后,向下滚动到 指纹 领域。 


在 sign 命令中,替换文本 指纹 与您的证书指纹的实际值一致。 

“SIGNTOOL.EXE 路径” 签名 /tr http://ts.ssl.com/ /td sha256 /fd sha256 /SHA1 指纹“PATH_OF_FILE_TO_BE_SIGNED”

验证签名

您可以通过右键单击已签名的文件查看其属性来检查已应用的数字签名。 

  1. 点击 数字签名 选项卡。将鼠标悬停在 签名列表 框并单击显示的证书名称以突出显示它。单击 信息 框继续。 

  2. 您将能够看到用于签署文件的证书的名称以及签署和加盖时间戳的日期和时间。

注意SSL代码签名证书的私钥 无法出口, 和证书 无法以可下载的 .pfx 文件形式发布证书必须使用经批准的安全选项(例如证书颁发机构)生成和存储。 符合 FIPS 140-2 标准的 YubiKey USB 令牌SSL 的 eSigner 云签名服务,或 支持的云 HSM.

感谢您选择SSL.com! 如有任何疑问,请通过电子邮件与我们联系 Support@SSL.com,致电 1-877-SSL-SECURE,或只需单击此页面右下方的聊天链接。

保持信息灵通和安全

SSL.com 是网络安全领域的全球领导者, PKI 和数字证书。注册以接收最新的行业新闻、提示和产品公告 SSL.com.

SSL.com

我们希望收到您的反馈

参加我们的调查,让我们知道您对最近购买的想法。

隐私概述
SSL.com

本网站使用Cookie,以便我们可以为您提供最佳的用户体验。 Cookie信息存储在您的浏览器中,并执行诸如在您返回我们的网站时识别您的身份以及帮助我​​们的团队了解您发现网站中最有趣和有用的部分之类的功能。

欲了解更多信息,请阅读我们的 Cookie和隐私声明.

3rd方Cookie

本网站使用 Google Analytics & 统计计数器 收集匿名信息,例如网站的访问者数量和最受欢迎的页面。

保持启用这些Cookie有助于我们改善网站。

查看详细