4

ウィンドウから保存された証明書を使用してマニフェスト (アセンブリではなく) に署名する ClickOnce アプリケーションがあります。私のローカル マシンのビジュアル スタジオでは、すべてがうまくビルド/公開されます。Bamboo 統合テストに使用する別のコンピューターがありますが、動作していません。パブリッシュ タスク中に次のエラーが発生します。

エラー MSB4044: "SignFile" タスクに、必須パラメーター "CertificateThumbprint" の値が指定されていません。

私はすでに調査を行っており、私が見たすべての投稿は、証明書が構築されているマシンに証明書をインストールする必要があると言っています。私はすでにこれを行っています。実際、同じマシンでビジュアル スタジオのビルド/パブリッシュを実行したところ、機能したため、明らかに証明書がインストールされています。

別の問題は、ストアの代わりに証明書ファイル参照を使用しようとしたことで、他の問題が発生しました。msbuild 中に、アセンブリの署名をオフにしても、アセンブリに署名するための証明書をインポートできないというエラーが発生するようにします。

エラー MSB3326: 次のキー ファイルをインポートできません: DummyKey.snk。キー ファイルは、パスワードで保護されている場合があります。これを修正するには、証明書を再度インポートするか、証明書を現在のユーザーの個人証明書ストアに手動でインポートしてください。

このファイルにはパスワードがなく、無効になっているため、何が問題なのかわかりません。どんな助けでも素晴らしいでしょう

4

1 に答える 1

8

コード署名証明書は個人ストアにインストールされます。ビルド マシンで –ビルド サービス アカウント用にインストールしましたか? アセンブリに署名する厳密な名前は、マニフェストに署名する Authenticode とは関係がないことに注意してください。

ClickOnce マニフェストに自分自身に署名するのに少し時間を費やし、ようやく機能するようになりました。彼らが誰かを助ける場合に備えて、私の調査結果の詳細は次のとおりです。

  1. PFX ファイルを生成するときは、パスワードを指定する必要があります。

  2. PFX がパスワードで保護されている場合、MSBuild は証明書の自動インストールに失敗します。

    2618: 次のキー ファイルをインポートできません

  3. 自動インストールを行っていなくても、CSPROJ ファイルには<ManifestKeyFile>(だけでなく) 指定 する必要があります。<ManifestCertificateThumbprint>そうしないと、MSBuild は SignFile タスクを正しく呼び出しません。

    4677 : 「SignFile」タスクには、必須パラメーター「CertificateThumbprint」の値が指定されていません。

  4. コマンドでMicrosoft SDKs\Windows\v7.0A\bin\signtool.exeを呼び出すことにより、証明書をインストールして署名できますが、CSPROJ にはクリア テキストのパスワードがあります。

  5. Project > Properties > Signing > Select from Fileが最適なルートのようです。ただし、これらの手順はアカウントごとに手動で実行する必要があるため、手順 1 のパスワードを入力して証明書を個人ストアに取得できます。

  6. マジックを検証する最も簡単な方法: ClickOnce ドロップをダウンロードし、 setup.exe > Properties > Digital Signatures > your certificate を右クリックします

于 2014-01-03T19:01:06.270 に答える