有没有办法加快signtool的速度?很慢

问题描述 投票:0回答:1

我正在使用 Signtool 签署大约 70 个文件。每个文件都必须使用 SHA1 和 SHA256 进行签名,因此需要 140 次签名操作。在速度非常快的计算机上大约需要 10 分钟,或者每个签名大约需要 4 秒。我觉得这不正常。

由于这是 EV 代码签名,因此必须使用 USB 令牌。令牌位于我所在的计算机上,但签名是在我通过 RDP 连接的计算机上进行的,这可能是一个因素。

无法使用执行签名的计算机上的 USB 令牌“可靠”地登录 RDP 会话。多年来,我使用各种方法、USB 网络门等尝试了很多很多方法,但最终不再找到令牌,如果您无法物理访问签名计算机,那么您就会陷入困境删除令牌,重新启动,然后将令牌放回原处。 使用的两个命令行是:

SHA1: Signtool.exe 签名 /fd sha1 /v /t

http://timestamp.digicert.com

/i Digicert C:\MyApp.exe SHA256: Signtool.exe 签名 /as /fd sha256 /v /tr

http://timestamp.digicert.com

/i Digicert C:\MyApp.exe 我尝试了各种时间戳 URL,digicert 似乎是最快的之一。

根据我所读到的内容,signtool.exe 似乎可能会将要签名的文件内容发送到要进行哈希处理的 USB 令牌,这意味着在我的情况下它会通过网络进行传输。如果是这样的话,有什么办法可以避免这种情况吗? Signtool 肯定可以自己进行哈希吗?

一个问题是序列化 - 如果我有许多并行运行的signtool.exe,它们会变得越来越慢(每次签名需要60-100秒)。也许 USB 令牌中发生了一些序列化?因此,签名必须一次完成一个。

还有其他方法可以加快速度吗?

code-signing signtool safenet
1个回答
0
投票
Jsign

(免责声明:我是作者),但不幸的是,限制因素很可能是 USB 令牌和时间戳。 Nitrokey 3 等某些设备每次 RSA 操作可能需要 1 秒,而 Yubikey 5 仅需要 100 毫秒。此外,时间还取决于密钥的大小,使用 2048 位密钥进行签名比使用 4096 位密钥进行签名要快得多。

注意,token 只需要对文件的 hash 进行签名。如果您的构建将完整文件发送到托管令牌的计算机,则会导致不必要的速度减慢。在这种情况下,您可以使用 Signtool 的分离签名功能(使用

/dg

/di
选项)。
时间戳也有限制,某些服务可以限制请求。您可以尝试使用 

https://rfc3161.ai.moda

,这是一个负载均衡器,将时间戳请求转发到不同的服务器。

© www.soinside.com 2019 - 2024. All rights reserved.