"无效的SHA1哈希格式"从msbuild或命令行调用signtool时出错

时间:2016-03-01 08:41:44

标签: batch-file msbuild code-signing signtool

我正在尝试使用SignTool.exe在项目构建期间签署我的程序集和设置文件。关注this answer我想使用/sha1选项,以便我不需要指定证书密码。但是,当我这样做时,我得到一个"无效的SHA1哈希格式"错误。我从MSBuild Exec任务,Visual Studio Developer命令提示符和批处理文件都尝试了同样的错误。

我尝试的命令(显然是使用不同的密钥):

signtool.exe sign /a /sha1 ‎1234567890abcdef1234567890abcdef12345678 /tr http://timestamp.comodoca.com /td SHA256 /v Setup.msi

我认为我的证书安装正确且SHA1密钥正确,因为它正确地与SignFile MSBuild task一起使用。我只是使用它,但我还需要能够签署我的安装程序文件,这些文件不是用MSBuild构建的,因此需要从批处理脚本中签名。

那么可能是什么问题以及如何解决?

2 个答案:

答案 0 :(得分:7)

我遇到了同样的问题,发现可能存在隐藏的UNICODE字符导致此错误。只需将文本复制到新的记事本实例并返回即可。 或者,将光标放在以下位置:

/sha1 <cursor>abcdefg

然后按BACKSPACE。如果你必须按BACKSPACE两次以将光标移到&#34; / sha1&#34;指令,有一个看不见的字符。然后输入空格就完成了。

答案 1 :(得分:2)

愚蠢的错误,我无法相信它花了这么长时间才意识到。我在指纹字符串之前有一个额外的空格字符,这是造成错误的原因。

即使在我确定之后,我又遇到了另一个错误:

  

没有找到符合所有给定标准的证书。

使用/debug选项再次运行命令列出了它尝试使用的所有证书和

  

在哈希过滤器之后,剩下0个证书。

我想要使用的证书的哈希SHA1哈希与我指定的完全相同,唯一的例外是哈希全部是大写字母。所以用所有大写字母的哈希再次尝试了这个命令,然后......就可以了。

由于我没有看到这个要求记录在任何地方,我认为我会在这里提供答案。