SignTool не подписывает приложение ClickOnce с использованием SHA256, использует только SHA1

Я пытаюсь подписать мое приложение clickonce. У меня есть сертификат подписи кода EV, который использует SHA256. Проблема в том, что когда я подписываю свое приложение с помощью команд после сборки, кажется, что оно использует 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

Вот команда 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)"

Я вижу, что MyProgram.exe.deploy имеет цифровую подпись, когда я смотрю на свойства файла.

При запуске signtool /verify не возвращаются ошибки

Когда я пытаюсь запустить приложение, я получаю сообщение об ошибке "Проверка приложения не удалась. Невозможно продолжить".

В деталях сообщения об ошибке есть эта строка:

+ File, MyProgram.exe, has a different computed hash than specified in manifest.

Когда я открываю и смотрю на манифест, хэш для MyProgram.exe указывается как SHA256

В чем может быть проблема? Что заставляет signtool отказаться от использования SHA256? Из того, что я прочитал, он должен использовать SHA256 по умолчанию.

Я удалил / переустановил Visual Studio, Windows SDK, все установленные библиотеки.net безрезультатно.

Я действительно надеюсь, что у кого-то есть идея...

1 ответ

Решение

У вас есть эта проблема с приложением WPF? Если это так, то подписание исполняемого файла в цели AfterCompile должно решить вашу проблему. Это сработало для меня.

Дополнительную информацию по этому вопросу можно найти здесь:

Очевидно, что когда Фил подписывает свой исполняемый файл с помощью команд PostBuild или BeforePublish, когда пользователь устанавливает его, он получает страшную ошибку "exe имеет вычисленный хэш, отличный от указанного в манифесте". Он обнаружил, что использование AfterCompile вместо этого решило проблему.

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

Другие вопросы по тегам