私は.pfx
ファイルを読み取り、証明書をcertstoreにインポートする方法を探して半日ぐるぐる探していました。
これまでのところ、.pfx
でX509Certifcate
ファイルを読み取ることができ、.pfx
ファイル内の1つの証明書をインポートできます。これまでのところ良好ですが、.pfx
ファイルに3つの証明書があり、.pfx
をX509Certificate
とともにロードすると、他の2つの証明書が表示されません。
証明書は
*個人情報交換-PKCS#12(.PFX)
可能であれば、証明書パスにすべての証明書を含めます
強力な保護を有効にする(IE 5.0、NT 4.0 SP4以上が必要)
これらは、証明書をエクスポートするときに選択したオプションです。手動でcertstore(MMC)に移動し、個人用フォルダーに自分でインポートしているため、3つの証明書があることはわかっています。
X509Certificate2Collection
クラスを使用して、証明書を含むコレクションオブジェクトを。pfxファイルで取得できるはずです...ここに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
、中間CA証明書にはStoreName.CertificateAuthority
、ルートCA証明書にはStoreName.Root
を使用する必要があります。