使用 signtool.exe 对多个文件进行签名

问题描述

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

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

解决方法

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

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

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

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


也许对某些人有用,Digicert 的 DigiCertUtil 在每个文件之间使用“*”。

文件名是要进行代码签名的文件列表。要指定更多然后 一个文件,用星号分隔每个文件名或文件路径 特点 *。如果文件路径包含空格,请用引号将其括起来。

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


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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...