「証明書ストアでマニフェスト署名証明書が見つかりません」-新しいキーを追加する場合でも


153

厳密な名前のキー署名を使用してプロジェクトを構築できません。タイトルのメッセージが常に表示されます。

はい、プロジェクトは最初に別のマシンからコピーされました。ただし、プロジェクトのプロパティの[署名]タブで新しいキーを追加しても、このエラーは表示されます。

管理者としてVisual Studioを実行して、手動でキーをWindows証明書ストアに追加してみました。

助けて!

編集:新しいプロジェクトではこのエラーは発生しませんが、この既存のプロジェクトを動作させたいです。新しい証明書を作成しても機能しません!


3
どのようなVSプロジェクトですか?[プロジェクトプロパティの署名]タブで[ClickOnceマニフェストに署名する]もオフにしましたか?
Simon Mourier、2012

@Simon Mourier、そのオプションをオフにすると、ファイルは署名されません。署名して欲しい!これはC#プロジェクトです。ラップトップではなく、メインの開発マシンで問題なく動作します。
Marcus

エラーメッセージはビルドログなどに表示されますか?ログをコピーして貼り付けると役立ちます。
オーウェンウェンゲルド2012

ビルドログのエラー:「証明書ストアでマニフェスト署名証明書が見つかりません」
Marcus

受け入れられた回答にコード行が表示されませんでした。しかし、これは私にとってはうまくいきました:VS2015で新しいキーを作成しました。[アセンブリの署名]をクリックして、保存しました。次に、[ファイルから選択]ボタンをクリックし、先ほど作成したファイルを選択し、[アセンブリの署名]をもう一度クリックして、保存しました。再建。
Tim

回答:


234

私は最終的に解決策を見つけました、そしてこれが他の誰かにも役立つことを本当に望んでいます。

  1. .csproj問題のプロジェクトのファイルを編集します。
  2. 次のコード行を削除します。

    <PropertyGroup>
       <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
    </PropertyGroup>
    <PropertyGroup>
       <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    </PropertyGroup>
    <PropertyGroup>
       <GenerateManifests>true</GenerateManifests>
    </PropertyGroup>
    <PropertyGroup>
       <SignManifests>false</SignManifests>
    </PropertyGroup>
    

1
私も働いた。そのような行動の注意点はありますか?
Doctor Coder、

1
うん

2
私は、反響を知らずにこれを行うことはありません... とにかくそれを行います
フジツボ.m

私の場合、問題を削除ManifestCertificateThumbprintしてManifestKeyFile解決します。
アーメドシャメル

私のために働いた。これによる影響はわかりませんが、少なくとも1つは作業中のプロジェクトであるため、これで十分です。
Parrotmaster

147

Visual Studio内でプロジェクトの「プロパティ」に移動します。次に、署名タブに移動します。

次に、「ワンクリックマニフェストに署名する」がオフになっていることを確認します。


更新された手順:

ソリューションエクスプローラー内:

  1. プロジェクトを右クリック
  2. プロパティをクリックします
  3. 通常は左側にある「署名」タブを選択します
  4. Sign the ClickOnceマニフェストにチェックを付ける
  5. 必ず保存してください!

ここに画像の説明を入力してください


2
あなたが言ったことは問題なく、うまくいくはずですが、しませんでした。最後に、以下の回答で述べたようにコード行を削除する必要がありました
Hamid Shahid

1
これは何をしていますか/このアクションは何を意味していますか?
LazerSharks 2016

@TrailMix構成ファイルを適切に変更します。
ADL、2016年

1
これはvs2010の解決策を私に与えました:) up!
jace 2016年

1
素敵な答え!私はVS2012を使用していますが、実際に機能します。+1
kiLLua

15

それは簡単です!!

私はこの手順に従ってこの問題を解決しました:

  1. プロジェクトのプロパティを開く img
  2. [署名]タブをクリックします
  3. そして「アセンブリに署名する」のチェックを外します

それでおしまい!!


13
  1. メモ帳で.csprojファイルを開きます。
  2. 証明書ストアの署名証明書に関連する以下の情報を削除します

    <PropertyGroup>
      <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
      <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>false</SignManifests>
    </PropertyGroup>
    

11

行く> -プロジェクトを右クリック:これを試してみてくださいプロパティ - >をクリックし、署名画面の左側にある- > チェックを外して[ログイン]をクリックし、マニフェストに一度 - >保存&ビルド


6

Visual Studio内のプロジェクトの「プロパティ」に移動します。次に、署名タブに移動します。

次に、「ワンクリックマニフェストに署名する」がオフになっていることを確認します。

または

1. .csprojファイルをメモ帳で開きます。

2.証明書ストアの署名証明書に関連する以下の情報を削除しますxxxxx xxxxxx xxxxxxxx.pfx true false `

私のために働いた。


3

これが、プロジェクトのコピー元のシステムでWindowsによって作成された個人証明書であるとすると、プロジェクトが存在するシステムで証明書マネージャーを使用して、証明書をインポートできます。証明書マネージャー(certmgr)を起動し、個人証明書を選択してから、既存の証明書のリストの下で右クリックし、タスクからインポートを選択します。参照を使用して、プロジェクト内の.pfx(プロジェクトとともにコピーした以前のシステムの.pfx)を見つけます。プロジェクトディレクトリと同じ名前のサブディレクトリにある必要があります。私はC#とVSに精通しているので、それがあなたの環境でない場合は、.pfxが別の場所にあるか、この提案が適用されない可能性があります。インポート後、ステータスメッセージが表示されます。成功した場合、証明書のコンパイルエラーは表示されなくなります。certmgr画面


明確で簡潔!
Guido Leenders

0

Windows証明書ストアにキーを手動で追加するだけでは不十分です。証明書には、署名された公開鍵のみが含まれます。証明書の公開鍵に関連付けられている秘密鍵もインポートする必要があります。.pfxファイルには、1つのファイルに公開キーと秘密キーの両方が含まれています。それをインポートする必要があります。


ありがとうございますが、すでに試してみました。とにかく新しい証明書を作成すると、Visual Studioによって証明書が自動的に追加されます。ただし、.pfxファイルも手動で追加してみました。それを正しい証明書ストアにインストールするためのウィンドウを残し、個人用ストアにも追加しました。
Marcus

秘密鍵は証明書ストアに保管されません。これを読んでください、それはあなたが区別を理解するのに役立つかもしれません:technet.microsoft.com/en-us/library/cc962112.aspx
Owen Wengerd

証明書マネージャーで証明書のプロパティウィンドウを開いて、関連付けられている秘密鍵が使用可能であることを確認できることを付け加えておきます。秘密鍵が使用可能な場合、「一般」ページの下部に「この証明書に対応する秘密鍵があります」というテキストが表示されます。そのテキストが表示されない場合、秘密鍵はインストールされていません。
オーウェンウェンゲルド2012

はい、「この証明書に対応する秘密鍵を持っています」と書かれています。
Marcus

鍵や証明書を問題として除外していると思います。
オーウェンウェンゲルド2012

0

別のコンピューターからファイルをコピーしたと言いました。それらをコピーした後、「ブロックを解除」しましたか?具体的には、.snkファイルをチェックして、安全でないとマークされていないことを確認する必要があります。


それはブロックされていません、それはWindows Live Mesh同期ソフトウェアからやって来ました。ただし、ラップトップ上のVisual Studio内で新しいキーを作成することもできないため、これは無関係です。
Marcus

0

属性を使用して厳密な名前でアセンブリに署名するには

開くAssemblyInfo.cs(で$(SolutionDir)\Properties

AssemblyKeyFileAttributeまたはAssemblyKeyNameAttribute、厳密な名前でアセンブリに署名するときに使用するキーペアを含むファイルまたはコンテナの名前を指定します。

次のコードを追加します。

[assembly:AssemblyKeyFileAttribute("keyfile.snk")]

この行を追加しても違いはありませんが、同じエラーが発生します。
Marcus

0

プロジェクトまたはソリューションをローカルでビルドするだけの場合は、他の人が示唆しているように、署名を削除することは非常に単純なソリューションになる可能性があります。

ただし、TeamCityのような自動化ビルドサーバーでこのエラーが発生し、実際のリリースピースを展開または配布用にビルドする場合、この証明書をビルドマシンの証明書ストアに適切にインストールする方法を検討して、ビルドの最後に署名されたパッケージ。

一般に、PFX証明書をソース管理にチェックイン/コミットすることはお勧めしません。そのため、ビルドプロセス中にビルドサーバーでこのファイルを取得する方法は、もう1つの質問ですが、ソリューションと一緒にこのファイルが保存されている場合もあります。コードなので、プロジェクトフォルダーで見つけることができます。

必要なのは、ビルドサーバーの適切なアカウントでこの証明書をインストールすることだけです。

  1. Windows SysinternalsからPsExecをダウンロードします

  2. コマンドプロンプトを開き、次のように入力します。これは、ローカルシステムとして実行されている新しいコマンドプロンプトを生成します(TeamCityがデフォルトのローカルシステムアカウントで実行されていると想定しています)。

    > psexec.exe -i -s cmd.exe

  3. この新しいコマンドプロンプトで、証明書を含むディレクトリに移動し、インストールするファイル名を入力します(ファイルの名前を自分のものに変更します)。

    > mykey.pfx

  4. 証明書のインポートウィザードが起動します。クリックして、推奨されるすべてのデフォルトを選択します。

  5. ビルドを実行します。

すべてのクレジットはスチュアートノーブルに送られます(さらに、ローランケンペにも送られますbelieve)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.