web-dev-qa-db-ja.com

Signtoolエラー:Windowsストアアプリですべての所定の基準を満たす証明書が見つかりませんでしたか?

だから、私は私が持っているpfxファイルでWindows 8 appxパッケージに署名しようとしています。私はそのようなコマンドを使っています:

signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"

そしてこれから、私は得ます:

SignToolエラー:指定された基準をすべて満たす証明書が見つかりませんでした。

私が満たしていないのはどの「基準」ですか?これはテスト専用であるため、これらは自己署名証明書です。キーをインポートしてから署名しようとしましたが、常に同じエラーが発生します。これをどのように修正しますか?

240
Earlz

Visual Studioからこのエラーが発生した場合、それは元々開発されたコンピューターに一致するように署名証明書が設定されていたためです。

これを確認するには、プロジェクトのプロパティ>署名タブを開き、証明書の詳細を確認します。

署名を無効にするには、[ClickOnceマニフェストに署名する]をオフにします。

Signing Properties

このオプションをオフにしたくない場合は、証明書をインストールする必要があります。

519
JDandChips

/ debugを試してください。1,2 のように:

signtool sign /debug /f mypfxfile.pfx /p <password> (mydllexectuable).exe

何が起こっているのかを知るのに役立ちます。次のような出力が得られるはずです。

The following certificates were considered:
    Issued to: <issuer>
    Issued by: <certificate authority> Class 2 Primary Intermediate Server CA
    Expires:   Sun Mar 01 14:18:23 2015
    SHA1 hash: DD0000000000000000000000000000000000D93E

    Issued to: <certificate authority> Certification Authority
    Issued by: <certificate authority> Certification Authority
    Expires:   Wed Sep 17 12:46:36 2036
    SHA1 hash: 3E0000000000000000000000000000000000000F

After EKU filter, 2 certs were left.
After expiry filter, 2 certs were left.
After Private Key filter, 0 certs were left.
SignTool Error: No certificates were found that met all the given criteria.

どのフィルタが証明書が機能しない原因になっているのか、または証明書が考慮されていないのかを確認できます。

ハッシュやその他の情報を変更しましたが、あなたはその考えを理解するはずです。お役に立てれば。


1 注意してください:signtool/debugオプションがどこに置かれているかについて特定です。それはsignステートメントの後に行く必要があります。
2 また、注意してください。/debugオプションは、一部のバージョンのsigntoolでのみ機能します。 WDKバージョンにはオプションがありますが、Windows SDKバージョンにはありません。

88
Daniel

ほとんどの証明書には有効期限があるため、必ず最初に証明書の有効期限を確認してください。私の場合、証明書の有効期限が切れており、私はプロジェクトを構築しようとしていました。

30
whizkid

プロジェクトプロパティの[署名]タブから[一度クリックしたマニフェストに署名する]チェックボックスをオフにすると、エラーが削除され、そこから新しいものを作成できます。

15
Sourav Sharma

同じ問題を抱えて、証明書の秘密鍵には許可がないことがわかりました。
修正するには - 証明書管理を開き、証明書を見つけて右クリック - >秘密鍵の管理を選択してからセキュリティを確認し、ユーザーが追加され許可を与えられていることを確認します。

14
user3740240

他の誰かがこれに遭遇した場合:私の問題は、私がsigntool.exeアプリを使用する前にコマンドプロンプトを管理者として実行する必要があるということでした。それからすべてが素晴らしく機能します。

13
Dave

私の場合、関連付けようとしている証明書の種類が間違っています。
"コード認証" ではなく、 "サーバー認証" を使用しました。
これは、「目的」セクションの「証明書スナップ」で確認できます。
その後、それはちょうどうまく機能します。

12
maridob

アプリに署名する必要がない場合は、プロジェクトを右クリックしてください。

Project Properties -> Signing -> uncheck Sign the ClickOnce Manifest

これ MSの記事も示唆しているように、

Visual Studio 2008を使用していて.NET 3.5をターゲットにしていて自動更新を使用している場合は、証明書を変更して新しいバージョンを展開するだけです。

8
nPcomp

私はこの問題を抱えていて、以下のどのステップがうまくいったか完全にはわからないが、これが他の誰かに役立つことを願っています...これが私がしたことです:

  • ダウンロードした証明書(.crt)を証明書にインストールします(私はそれを「個人用」ストアに入れます) - .crtファイルを右クリックし、 証明書のインストール をクリックします。
  • プライベートキーと拡張プロパティを含むpfxファイルとして、certmgr.mscおよび export 証明書(最初のステップで使用したスト​​アのいずれかにあります)を実行します(おそらく不要)。
  • プロジェクトに署名するときにエクスポートされた.pfxファイルを使用する
  • Signtoolの例:signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
    パスワードがエクスポート中に提供されたものと同じ場合
7
noelicus

私はこれを解決するために、デフォルトのMy(Local User)ストアの代わりに/smフラグを使用してマシンストアを検索するように指定しました。また、/debugを使用してsigntoolのデバッグを有効にすることもできます。

6
jle

私は同じ問題を抱えていて、いくつかの答え(ここに掲載されています)を読んでいて、証明書の有効期限が切れているのを見ました。

私のスタートプロジェクトから新しいものを作成するだけです。その後、証明書マネージャで期限切れの証明書を削除しました。

今すぐすべてが正常にコンパイルされます。

5

基準には、アカウント名(秘密キーが関連付けられている)、ドメイン、会社、有効期限、使用目的などが含まれます。

このエラーが発生するのには、さまざまな原因が考えられますが、既にいくつかリストされています。証明書をインポートするときは、必ず認証局(CA)から受け取った元のファイルを使用しないでください。そうしないと、一部のプロパティが失われる可能性があります。

例:最近、同じマシン上の異なるアカウントからエクスポートされた証明書をインポートしようとしました。証明書が私のアカウントに表示されるようになりましたが、私のアカウントに関連付けられていなかったため、signtoolはファイル名とパスワードを明示的に指定せずにそれを認識することを拒否しました。ビルドプロセスの一部として行われ、バッチファイルまたはソースファイルに明示的に書き出されると、これは十分に安全ではないかもしれません。 (元のCA発行の証明書をインポートすることで解決しました。)

5
Simon Hawkin

私の問題は、私がsigntoolのオプションを理解していなかったということでした。証明書と一致しないもので/ nオプションを指定しました。私がそれを取り除いたとき、それは不満を止めました。

2
Silwing

私もこの問題を抱えています、たくさん試してみました。 SDKとVisual Studioの署名を使用しましたが、どこにでも「指定されたすべての条件を満たす証明書が見つかりません」と表示されました。

解決策: "秘密鍵フィルタの後": '0 left'がオプションsigntool sign/debug ...と一緒に表示される場合、原因はPCにストア自体にCAがないことです。これを解決するには、最初にCA(私の場合は.crtファイル)をインストールしてから、もう一度サインを実行します。今はうまくいくはずです!

Signtoolは、要求され、同じPCが所有するCAでのみ使用できます。

私のコンピュータ名が変更され、証明書の有効期限が切れた同様の問題がありました。私は新しいテスト証明書を作成することによってこの問題を解決することができました。

Visual Studioのソリューションエクスプローラーでプロジェクトを右クリックします。プロパティを選択します。プロパティウィンドウでサインインを選択します。 「テスト証明書の作成」をクリックしてください。テスト証明書のパスワード情報を入力して[OK]をクリックします。

2
nate_weldon

/ debugを使用すると、 "Private Key filterの後に0個の証明書が残っています。"というメッセージが表示された場合、pfxファイルにプライベートキーがないことが原因の可能性があります。インストールした証明書をpfxファイルにエクスポートするときは、チェックボックスを有効にして秘密キーも含めるようにしてください。

project propertiesに行き、コンパイルを開始する前にFirmからすべてのフィールドのチェックを外してください

1
ionsofa

私は同じ「 秘密鍵フィルタの後、0個の証明書が残っていました 」というメッセージを受け取り、そのメッセージが何を意味するのか理解しようとして私の人生の多くを費やしました。

問題は、証明書をWindowsの証明書ストアに誤ってインストールしたため、コード署名証明書に関連付けられた秘密キーが存在しなかったことです。

私がすべきことはこれでした:

  1. FirefoxまたはInternet Explorerを使用して、発行者にリクエストを送信してください。これはブラウザによって静かに保存されるPRIVATE KEYを生成します(Firefoxではダイアログがほんの一瞬だけ表示されます)。他のブラウザでは動作しないかもしれないことに注意してください。あなたの人生はそれらが機能するかどうかを知るには短すぎます。

  2. リクエストを送信し、発行者の検証フープとループを飛び越え、ヤギを生け贄に捧げ、神々に祈り、あなたの祖父母から署名された陳述を提出するなど。

  3. 証明書(.crt)をダウンロードして 同じブラウザ にインポートします。 ブラウザは秘密鍵と証明書の両方を持っています

  4. ブラウザからPersonal Information Exchange(.p12)ファイルとして証明書をエクスポートします。このファイルを保護するためにパスワードを入力するように求められます。

  5. .p12ファイルのバックアップコピーを保存してください。

  6. 証明書マネージャ(certmgr.msc)を実行し、 Personal 証明書ストアを右クリックし、 All Tasks/Import ... を選択して、.p12ファイルをWindowsにインポートします。ファイルを保護するために使用したパスワードの入力を求められます。この時点で、セキュリティ要件に応じて、キーをエクスポート可能としてマークして、Windowsストアからコピーを復元できます。バッチスクリプトを中断したい場合は、使用前にパスワードが必要であるとマークすることもできます。

  7. Signtoolを首尾よく実行し、安堵のため息をついて、そして悪いエラーメッセージと悪いまたは足りないドキュメンテーションのためにあなたが人生のどのくらい浪費したかについて熟考してください。

0
MZB