5

次のコードを実行するときの質問:

X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password", X509KeyStorageFlags.Exportable);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;

次のエラーが表示されますKeyset does not exist

証明書をストアに追加していませんが、これは秘密鍵にアクセスできるようにするために必要ですか?

4

1 に答える 1

10

X509KeyStorageFlags.PersistKeySetオプションを X509Certificate2 コンストラクターの最後の引数に追加します。そうしないと、p12 ファイルをロードするときに秘密鍵がロードされません。具体的には:

X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password",    
    X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;

それが失敗した場合は、キーが保存されている場所のファイル許可の問題である可能性があります。説明と例については、X509Certificate - キーセットが存在しないを参照してください。

于 2012-09-11T08:40:54.887 に答える