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