我们正在努力使用 signtool.exe摘要选项优化数字签名过程。到目前为止,工作流程如下所示:
- 在客户端上创建摘要:signtool.exe sign/f cert/fd sha256/dg 。我的文件.dll
- 将MyFile.dll.dig摘要发送到我们的签名服务器。 签名
- 服务器上的签名摘要:signtool.exe sign/f cert/fd sha256/ds MyFile.dll.dig
- 将签名MyFile.dll.dig.signed发送回客户端。
- 在客户端上创建签名:签名工具.exe签名/di。我的文件.dll
- 在客户端上添加一个时间戳:signtool.exe时间戳/tr http://some_timestamp_server/td sha256 MyFile.dll
有没有办法在签名服务器上执行时间戳?
有没有办法在签名服务器上执行时间戳?
否,并非不将整个文件传输到签名服务器。时间戳是直接应用于文件本身的操作,因此文件必须存在于本地。远程签名服务之所以有效,是因为只需要对摘要进行签名,而不是对完整的二进制文件进行签名。但是,正如您所指出的,您仍然需要使用/di
signtool 选项在本地引入已签名摘要。
您可以做的是创建一个自定义工具,以编程方式根据您的要求对文件进行签名和时间戳。请参阅这篇Microsoft文章,了解如何使用SignerSignEx2
支持时间戳的函数。
https://learn.microsoft.com/en-us/windows/win32/appxpkg/how-to-programmatically-sign-a-package?redirectedfrom=MSDN
你可能已经看到了这一点,但我也会看看 AzureSignTool 存储库,它使用未记录的SignerSignEx3
函数使用回调执行签名。可以合理地将 Azure 功能替换为对其他某个自定义签名服务的调用。