SignTool不使用SHA256签署ClickOnce应用程序,仅使用SHA1

smi*_*ty1 11 clickonce sha1 sha256 signtool

我正在尝试签署我的clickonce应用程序.我有一个使用SHA256的EV代码签名证书.问题是,当我使用post build命令签署我的应用程序时,它似乎使用SHA1而不是SHA256.这是输出窗口的剪辑:

Running Code Analysis...
1>  Code Analysis Complete -- 0 error(s), 0 warning(s)
1>  The following certificate was selected:
1>      Issued to: Certificate Subject Name Here
1>  
1>      Issued by: DigiCert EV Code Signing CA (SHA2)
1>  
1>      Expires:   Thu Apr 14 06:00:00 2016
1>  
1>      SHA1 hash: HASH-HERE
1>  
1>  
1>  Done Adding Additional Store
1>  Successfully signed and timestamped: C:\Users\AnyBody\Documents\Visual Studio 2013\Projects\My Project\Project Folder\obj\x86\My Configuration\MyProgram.exe
1>  
1>  
1>  Number of files successfully Signed: 1
1>  
1>  Number of warnings: 0
1>  
1>  Number of errors: 0
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的post build命令:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /fd SHA256 /t "http://timestamp.digicert.com" /n "Certificate Subject Name Here" /v "$(ProjectDir)obj\x86\$(ConfigurationName)\$(TargetFileName)"
Run Code Online (Sandbox Code Playgroud)

我可以看到MyProgram.exe.deploy在查看文件属性时附加了数字签名.

运行signtool/verify时没有返回错误

当我尝试启动应用程序时,我收到错误"应用程序验证未成功.无法继续".

在错误消息的详细信息中,有以下行:

+ File, MyProgram.exe, has a different computed hash than specified in manifest.
Run Code Online (Sandbox Code Playgroud)

当我打开并查看清单时,MyProgram.exe的哈希被指定为SHA256

可能是什么问题呢?是什么让signtool拒绝使用SHA256?根据我的阅读,它应该默认使用SHA256.

我有unistalled /重新安装的visual studio,windows sdk,所有已安装的.net库无济于事.

我真的希望有人有点想法......

小智 7

您是否在WPF应用程序中遇到此问题?如果是这样,在AfterCompile目标中签署可执行文件应该可以解决您的问题.这对我有用.

有关这方面的更多讨论可以在这里找到:

显然,当Phil使用PostBuild或BeforePublish命令签署他的可执行文件时,当用户安装它时,他会得到可怕的"exe具有与清单中指定的不同的计算哈希"错误.他发现使用AfterCompile来修复问题.

http://robindotnet.wordpress.com/2013/04/14/windows-8-and-clickonce-the-definitive-answer-revisited/

  • 为了其他用户的利益,如果要使用SHA256证书进行代码签名和清单签名,则至少需要使用.NET Framework 4.5版本的[SignTool.exe(签名工具)](http://msdn.microsoft .com/zh-cn/library/8s9b9yaz%28v = vs.110%29.aspx)和[Mage.exe(Manifest Generation and Editing Tool)](http://msdn.microsoft.com/en-us/library /acz3y3te%28v=vs.110%29.aspx)程序.看来以前的版本只支持SHA1. (3认同)