问题描述
我有一个从第三方 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 中指定多个文件时,这些文件仍将一次签名一个。