代码签名问题

时间:2016-02-26 10:54:05

标签: windows signtool

短版

我在使用Windows 7 / Signtool.exe签署代码时遇到了一些麻烦,我正在寻求一些建议/澄清如何处理以下问题:当我尝试在Windows 7上使用signtool签署.exe代码文件时和/作为选项,signtool不起作用,它抱怨我试图使用一些不受支持的选项。在Windows 7上签名没有/正常工作,并在Windows 8.1和Windows 10上使用/签名。

  1. 是否有人使用/作为在WIndows 7上签名使用signtool工作?

  2. 如果文件中只有一个签名,为什么有人想使用/ as?

  3. 长版

    我被建议签署我的.exe文件,主要是为了让关于软件未知来源的Windows警告消失,多年来这样做并没有过多地考虑它。我使用了signtool和客户提供的pfx文件,很好。该软件销往全球客户,需要在Windows XP及更高版本上运行。没有经验的用户可能会被警告说软件具有潜在的危险性,这就是多年前签署协议的原因。

    最近pfx文件已过期。除了一个新的有效证书(由Verisign / Geotrust提供),我现在得到了新文件的说明(支持?必须?强制执行/& used?)sha256,我需要使用以下命令行来签署我的代码:

    "signtool.exe" sign /n "..." /d "..." /du "..." /as /fd sha256 /tr "http://timestamp.geotrust.com/tsa" "<.exe file name>"
    

    我将新的pfx导入我的证书存储区,删除了旧的pfx(无论如何已经过期)并尝试了一下,但是在我的开发机器(Windows 7 x64)上,这给了我一个来自signtool的错误消息:

      

    SignTool错误:不存在所需的功能           此错误可能意味着您在操作系统上运行SignTool          不支持您指定的选项。

    我在Windows 8.1机器上尝试过,命令有效。我的客户试用了他的Windows 10机器,它也有效。

    通过反复试验我发现/ as选项导致问题,如果我省略它,我也可以在WIndows 7上签名。似乎消息以正确的方式引导,但当我在Microsoft(HTML editors)阅读文档时,在任何地方都没有/ as选项取决于操作系统版本。所以我怀疑可能还有其他东西需要更新,但由于我已经安装了最新的.net Framework(4.5.1),并且没有列出其他依赖项,我还能更新什么?将我的开发平台迁移到Windows 8或Windows 10也不是我现在想做的事情。

    我想过简单地省略/ as选项。它似乎处理附加到一个文件的多个签名。如果我遵循客户的要求,他仍然只需要代码上的一个签名(sha256变体,使用新证书)。

    当我提起这件事的时候,我的客户回复说,他从一些技术人员那里获得了样品signtool代码行,他从那里购买了证书。在他的测试机器(Windows 10)上,他发现它正常工作。如果我省略这个选项,他并不在乎,如果我保证这样做没有不利影响。我没有看到任何内容,因为就像我解释的那样,文件上只有一个签名,所以在我看来,添加另一个选项的选项是多余的。

    但是,我不是百分百肯定的。

1 个答案:

答案 0 :(得分:0)

Windows 7 sdk没有/ as选项。你必须升级到Win 8.1或更高版本。

signtool sign /?

应显示所有选项。

相关问题