11

clickonce アプリに署名しようとしています。SHA256 を使用する EV コード署名証明書があります。問題は、ビルド後のコマンドを使用してアプリに署名すると、SHA256 ではなく SHA1 が使用されているように見えることです。出力ウィンドウのクリップを次に示します。

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

私が使用しているビルド後のコマンドは次のとおりです。

"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 ライブラリをアンインストール/再インストールしましたが、役に立ちませんでした。

私は本当に誰かが何か考えを持っていることを願っています...

4

1 に答える 1

7

WPF アプリケーションでこの問題が発生していますか? その場合は、AfterCompile ターゲットで実行可能ファイルに署名すると、問題が解決するはずです。それは私のために働いた。

これに関する詳細な議論はここにあります:

どうやら、Phil が PostBuild または BeforePublish コマンドを使用して実行可能ファイルに署名すると、ユーザーがそれをインストールすると、恐ろしい「exe はマニフェストで指定されたものとは異なる計算されたハッシュを持っています」というエラーが表示されます。彼は、代わりに AfterCompile を使用すると問題が解決することを発見しました。

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

于 2014-02-19T21:51:28.780 に答える