【问题标题】:"Invalid SHA1 hash format" error calling signtool from msbuild or command line从 msbuild 或命令行调用 signtool 时出现“无效的 SHA1 哈希格式”错误
【发布时间】:2016-03-01 08:41:43
【问题描述】:

我正在尝试在项目构建期间使用SignTool.exe 对我的程序集和设置文件进行签名。在this answer 之后,我想使用/sha1 选项,这样我就不需要指定证书密码。但是,当我这样做时,我收到“无效的 SHA1 哈希格式”错误。我从 MSBuild Exec 任务、Visual Studio 开发人员命令提示符和批处理文件都尝试过,都出现相同的错误。

我正在尝试的命令是(显然使用不同的键):

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

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

那么可能是什么问题,我该如何解决?

【问题讨论】:

  • 不是使用 MSBuild 构建的,因此需要从批处理脚本进行签名,或者,使批处理脚本调用 msbuild 来对文件进行签名..
  • 谢谢@stijn。我确实考虑过这样做,但我也想了解出了什么问题。事实证明这是我的一个愚蠢的错误......我非常期待。

标签: batch-file msbuild code-signing signtool


【解决方案1】:

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

/sha1 <cursor>abcdefg

然后按退格键。如果您必须按两次 BACKSPACE 才能将光标移到“/sha1”指令旁边,则说明有一个不可见字符。然后只需输入空格即可完成。

【讨论】:

  • 就我而言,我也必须删除相反方向的字符。
【解决方案2】:

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

即使在解决了这个问题之后,我又遇到了另一个错误:

没有找到符合所有给定条件的证书。

使用/debug 选项再次运行该命令会列出它尝试使用的所有证书,并且

经过哈希过滤后,剩下 0 个证书。

我想要使用的证书的哈希 SHA1 哈希与我指定的完全相同,唯一的例外是哈希都是大写字母。因此,再次使用所有大写字母的哈希值尝试了该命令,并且......它成功了。

由于我没有在任何地方看到此要求记录在我认为我会在此处提供答案的任何地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2019-01-07
    • 2016-02-13
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    相关资源
    最近更新 更多