Ответ 1
Вы должны иметь возможность получить объект коллекции, содержащий сертификаты в вашем .pfx файле, с помощью класса X509Certificate2Collection
... здесь есть пример кода С#:
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, корневого ЦС) вам нужно будет открыть соответствующий хранилище сертификатов (как объект X509Store
), чтобы импортировать его.
Проверьте X509Store
docs:
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.