Digital signature Signtool.exe/dg/ds/di选项和时间戳

Digital signature Signtool.exe/dg/ds/di选项和时间戳,digital-signature,code-signing,signtool,trusted-timestamp,Digital Signature,Code Signing,Signtool,Trusted Timestamp,我们正在使用signtool.exe摘要选项优化数字签名过程。到目前为止,工作流如下所示: 在客户端上创建摘要:signtool.exe sign/f cert/fd sha256/dg。MyFile.dll 将MyFile.dll.dig摘要发送到我们的签名服务器 签名服务器上的签名摘要:signtool.exe Sign/f cert/fd sha256/ds MyFile.dll.dig 将签名MyFile.dll.dig.signed发送回客户端 在客户端上创建签名:signtool.e

我们正在使用signtool.exe摘要选项优化数字签名过程。到目前为止,工作流如下所示:

  • 在客户端上创建摘要:signtool.exe sign/f cert/fd sha256/dg。MyFile.dll
  • MyFile.dll.dig摘要发送到我们的签名服务器
  • 签名服务器上的签名摘要:signtool.exe Sign/f cert/fd sha256/ds MyFile.dll.dig
  • 将签名MyFile.dll.dig.signed发送回客户端
  • 在客户端上创建签名:signtool.exe sign/di.MyFile.dll
  • 在客户端上添加时间戳:signtool.exe timestamp/tr/td sha256 MyFile.dll
  • 有没有办法在签名服务器上执行时间戳

    有没有办法在签名服务器上执行时间戳

    不,除非将整个文件传输到签名服务器。时间戳是直接应用于文件本身的操作,因此文件必须在本地存在。远程签名服务之所以有效,是因为只需要对摘要进行签名,而不需要对完整的二进制文件进行签名。但是,正如您所指出的,您仍然需要使用
    /di
    signtool选项在本地接收签名摘要

    您可以做的是创建一个自定义工具,根据您的需求以编程方式对文件进行签名和时间戳。有关如何使用支持时间戳的
    Signersigne2
    函数的信息,请参阅这篇Microsoft文章。


    您可能已经看到了这一点,但我还要看看repo,它使用未记录的
    SignerSignEx3
    函数通过回调执行签名。您可以通过调用其他自定义签名服务来合理地替换Azure功能。

    是什么阻止您在签名服务器上执行时间戳?命令是什么?signtool.exe时间戳…MyFile.dll?MyFile.dll从未发送到签名服务器。为什么不将MyFile.dll文件发送到签名服务器,签名服务器将使用您在问题中编写的命令应用时间戳?因为文件大小。它可能有数百兆字节。虽然.dig和.deg.signature文件非常小,小于1K。当我尝试在本地复制此文件时,似乎需要在步骤1创建一个p7u文件。你有相同的行为吗?当我尝试在本地复制这个文件时,我似乎需要一个在步骤1中创建的p7u文件。你有同样的行为吗?我假设此文件包含PKCS7中的证书,然后.signed文件包含Base64中的签名。最后一步是合并它们吗?我不认为需要.p7u文件,但我不完全确定你在问什么。你是说时间戳是最后一步吗?实际上,摄取步骤是:signtool.exe sign/di.MyFile.dll。如果从MyFile.dll所在的目录中删除p7u文件,则会从signtoolso yeah.中获得错误。。这是什么。p7u有。。为什么它很重要?任何人