我们正在努力使用signtool.exe摘要选项优化数字签名过程。到目前为止,工作流程如下所示:
有没有办法在签名服务器上执行时间戳?
有没有办法在签名服务器上执行时间戳?
不,必须将整个文件传输到您的签名服务器。时间戳是直接应用于文件本身的操作,因此文件必须存在于本地。您的远程签名服务之所以有效,是因为只需要对摘要进行签名,而不是完整的二进制文件。但是,正如您所指出的,您仍然需要使用
/di
signtool 选项在本地提取签名摘要。
您可以做的是创建一个自定义工具,根据您的要求以编程方式对文件进行签名和时间戳。请参阅这篇 Microsoft 文章了解如何使用支持时间戳的
SignerSignEx2
函数。您可能已经看到了这一点,但我还会查看 AzureSignTool 存储库,它使用未记录的
SignerSignEx3
函数通过回调执行签名。您可以通过调用其他自定义签名服务来合理地替换 Azure 功能。
经过多次尝试和错误,我才学会了这一点。对于那些登陆这里的人来说,这就是答案。您不需要在添加时间戳的系统上签署证书私钥。一旦文件有签名,您就可以使用时间戳选项调用signtool。它将为签名添加时间戳。