36

私は半日、ファイルを読み取って証明書をcertstore.pfxにインポートする方法を探していました。

これまでのところ、ファイルを読み取り、.pfxファイルX509Certifcate内に1つの証明書をインポートすることができ.pfxます。これまでのところ良好ですが、ファイルには3つの証明書があり、 withを.pfxロードすると、他の2つの証明書を表示できません。.pfxX509Certificate

証明書はでエクスポートされました

*個人情報交換-PKCS#12(.PFX)

  • 可能であれば、すべての証明書を認証パスに含めます

  • 強力な保護を有効にする(IE 5.0、NT 4.0 SP4以降が必要)

これらは、証明書をエクスポートするときに選択されるオプションです。手動でcertstore(MMC)に移動し、自分で個人用フォルダーにインポートするため、3つの証明書があることを知っています。

4

1 に答える 1

61

クラスを使用して、 .pfxファイル内の証明書を含むコレクション オブジェクトを取得できるはずですX509Certificate2Collection。C# のサンプル コードは次のとおりです。

string certPath = <YOUR PFX FILE PATH>;
string certPass = <YOUR PASSWORD>;

// Create a collection object and populate it using the PFX file
X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import(certPath, certPass, X509KeyStorageFlags.PersistKeySet);

次に、コレクションを反復処理できます。

foreach (X509Certificate2 cert in collection)
{
    Console.WriteLine("Subject is: '{0}'", cert.Subject);
    Console.WriteLine("Issuer is:  '{0}'", cert.Issuer);

    // Import the certificates into X509Store objects
}

証明書の種類 (クライアント証明書、中間 CA 証明書、ルート CA) に応じて、適切な証明書ストアを (X509Storeオブジェクトとして) 開いてインポートする必要があります。

X509Storeドキュメントをチェックしてください:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509store.aspx

StoreName列挙型のさまざまなメンバー:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.storename.aspx

StoreName.My私が理解していることから、秘密鍵を含むクライアント証明書、StoreName.CertificateAuthority中間 CA 証明書、およびStoreName.Rootルート CA証明書に使用したいと考えています。

于 2011-02-18T02:09:10.600 に答える