web-dev-qa-db-ja.com

CERTUTILでPFXをインポートできません-「キーセットが存在しません」

他のWindowsシステム(Server 2008 R2、7、8)で使用すると正常にインストールされるPFXファイルがあります。 2台のサーバーで、次のようにインポートが失敗します。

CertUtil: -importPFX command FAILED: 0x80090016 (-2146893802)CertUtil: Keyset does not exist

このPFXを最初にインポートしたのは、MMCスナップインです。エラーは報告されておらず、証明書を開くと秘密鍵があることが示されているため、動作しているようですが、.NETアプリケーションを使用しています秘密鍵がないというエラーが発生しました。秘密鍵のアクセス許可を想定し、アプリプールに正しいアクセス許可を追加しました。これによる違いはありません。これを修正するために、何度かインポートと削除を行いました。

MMC)を介したインポートが実行されたときに、C:\ProgramData\Microsoft\Crypto\RSA\MachineKeysフォルダーに追加されたファイルのサイズは、サーバー上で79kbしか機能していないことに気付きました。通常、それらが機能するシステムでは2kbであると表示されます。

私はファイルに対してMD5チェックを行ったので、それらが同じであることを確認し(それらは同じでした)、機能していなかった(エクスポートではなく元のコピーされたファイル)システムからそれらをコピーして戻しました。

なぜこれが失敗するのでしょうか?

2
neildeadman

私たちが実行したすべてのGoogle検索は、常に同じ基本的な答えを返しました。これは、秘密鍵のアクセス許可に関連するものです...しかし、これは、表示されたエラーメッセージに基づいていました。

最終的には、WinHttpCertCfg.exeProcess Monitorを使用してフォルダーとレジストリへのアクセスをログに記録した後、問題を追跡しました。

開発者の1人がテスト証明書を追加するときに、C:\ProgramData\Microsoft\Crypto\RSA\MachineKeysフォルダーのセキュリティアクセス許可も変更して、IISがインポートした証明書の秘密鍵にアクセスできるようにしました。 MMCの証明書スナップインを介してアクセス許可を付与するよりも。

彼は新しい許可を追加しただけで、既存の許可を変更しませんでしたが、これはどういうわけか証明書のインポートを壊しました。追加の権限が削除されると、再び機能し始めました。

他の人がこれと同じ問題を抱えていることは非常に疑わしいですが、いつか誰かを助けるかもしれないので、質問を削除したり閉じたりするのではなく、答える価値があると考えました。

0
neildeadman