此网页提供有关使用 SSL.com 的说明 OV or EV 使用 Microsoft 的 SignTool 和 SSL.com 的代码签名证书 SSL Manager.
这些说明假定您的代码签名证书已安装,或者您已将其存储在硬件令牌上。 有关使用 eSigner 平台进行基于云的代码签名,请参阅 概述页面 这 入学指南.
请记住,对于基于硬件的 OV 和 EV 代码签名证书,私钥 仅存在于YubiKey FIPS USB令牌上 发送给您的令牌 必须附上 到用于对应用程序进行签名的计算机。 拥有 YubiKey FIPS 令牌的 Windows 用户还应下载并安装 YubiKey 智能卡微型驱动程序 在使用他们的令牌之前。
使用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时需要帮助,请参阅 这个方法.
选择签名证书
指定主题名称
如果您安装了多个代码签名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”
/tr
选项(指定RFC 3161时间戳服务器的URL), 不能 /t
(时间戳服务器的URL),与SSL.com的时间戳服务器不兼容。/td
选项 必须 按照 /tr
选项。 如果在时间戳服务器之前指定了时间戳摘要算法,则将使用默认的SHA-1算法。 Windows 10 SDK,HLK,WDK和ADK构建 20236及以上 需要使用 /tr
加上时间戳。 为了安全起见,建议在SHA256上使用SHA1。如果您遇到此错误:
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的文档,特别是 代码签名菜单.