使用signtool.exe签署多个文件

Leo*_*ong 6 windows certificate digital-signature signtool

我有一个从第三方 CA 购买的数字证书,我想用它来签署包含大量库文件/包 (.bpl) 的软件。但是,一一签署需要花费很多时间,我想知道有什么方法可以让我用更短的时间签署所有文件?

我当前用来签署文件的命令如下:
signtool.exe sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a "Insert_path_to_the_file_you_wish_to_sign"

小智 2

我在并行循环中使用signtool 签署多个文件。它似乎有效,但我注意到我们的证书提供商 (DigiCert) 建议您避免并发请求。 https://dev.digicert.com/best-practices/

因此,我现在在一个命令中使用 Signtool - 在一个命令行参数中传递所有文件。根据微软的文档,您可以使用“|” 每个文件之间。

Signtool [命令] [选项] [文件名| ...]

https://learn.microsoft.com/en-us/dotnet/framework/tools/signtool-exe


Digicert 的 DigiCertUtil 在每个文件之间使用“*”,这可能对某人有用。

文件名是要进行代码签名的文件列表。要指定多个文件,请使用星号字符 * 分隔每个文件名或文件路径。如果文件路径包含空格,则用引号将其引起来。

示例:DigiCertUtil.exe 签名 /kernelDriverSigning“example.exe driver.sys” 示例:DigiCertUtil.exe 签名 /sha1“054D9508B364A02A068FA5C6153847B6”“example.exe driver.sys”


根据避免并发请求的建议,我假设即使在 SignTool 或 DigiCertUtil 中指定多个文件,这些文件仍将一次签名一个。

  • 在“signtool”中,您**不需要**需要管道。只需将文件之间用 **空格** 连接起来即可。例如:“signtool 符号 /tr servername.com /td sha256 /f pfxFile.pfx /p 密码 /fd sha256 file1.dll file2.dll file3.dll file4.dll '带有空格的文件.dll'”。另请注意:我怀疑某些服务器有文件限制 - 我的服务器大约有 300 个文件。 (2认同)