使用您的代码签名证书

此网页提供有关使用 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代码签名指南.

使用SignTool签署可执行文件

Install 安装 Windows SDK和SignTool

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

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

Start 开始 PowerShell的

开始 PowerShell的 在命令窗口中搜索“ Powershell” Start 开始 菜单,然后单击桌面应用程序。

Powershell是Windows核心服务的命令行界面。 您可以使用它来执行SignTool并签名代码。

电动车 签名,将您的 USB 令牌附加到您的计算机(如果您还没有这样做的话)。 如果使用 eSigner,请安装 eSigner 云密钥适配器

请记住,私钥仅存在于发送给您的USB令牌上,并且 令牌必须附加 到用于对应用程序进行签名的计算机。 如果使用的是OV代码签名证书,则应跳过此步骤。

标志 可执行文件

您可以通过在 Powershell 窗口中发出以下命令来签署可执行文件。 如果使用带有 signtool.exe 的 eSigner 云签名,请务必安装 电子签名者 CKA

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

选择签名证书

指定主题名称

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

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

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

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

指定SHA1哈希

如果您有多个具有相同主题名称的证书,则还可以使用证书的SHA1哈希(或“缩略图”)来选择它进行签名。 更换 THUMBPRINT 在下面的命令中,使用实际的SHA1哈希您的证书。 您可以通过在certmgr中查看证书详细信息并查找 Thumbprint 字段(在命令中使用指纹之前,请确保从指纹中删除所有空格字符)。

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

使用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的菜单。

签名和时间戳代码包

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

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

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

订阅 SSL.com 的时事通讯

不要错过SSL.com上的新文章和更新

保持信息灵通和安全

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

我们希望收到您的反馈

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