Jak odzyskać certyfikaty z pliku pfx za pomocą c#?
Od pół dnia szukałem sposobu na odczytanie pliku .pfx
i zaimportowanie certyfikatów do certstore .
Na razie jestem w stanie odczytać plik .pfx
z X509Certifcate
i zaimportować jeden certyfikat w pliku .pfx
. Jak na razie dobrze, ale w pliku .pfx
są trzy certyfikaty i podczas ładowania .pfx
z X509Certificate
nie jestem w stanie zobaczyć pozostałych dwóch certyfikatów.
Certyfikat został wyeksportowany z
*osobiste Wymiana informacji-PKCS #12 (.PFX)
-
Dołącz wszystkie certyfikaty w ścieżce certyfikacji, jeśli to możliwe
-
Włącz silną ochronę (wymaga IE 5.0, NT 4.0 SP4 lub nowszego)
Są to opcje wybrane podczas eksportowania certyfikatu(certyfikatów). Wiem, że są trzy certyfikaty, ponieważ ręcznie wchodzę do certstore (MMC) i sam importuję je do folderu osobistego.
1 answers
Powinieneś być w stanie uzyskać obiekt kolekcji zawierający certy w twoim .plik pfx {[11] } za pomocą klasy X509Certificate2Collection
... oto przykładowy kod 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);
Następnie możesz iterować nad zbiorem:
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
}
W zależności od typu certyfikatu (client cert, intermediate CA cert, root CA) musisz otworzyć odpowiedni sklep cert (jako obiekt X509Store
), aby go zaimportować.
Zobacz X509Store
docs:
Http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509store.aspx
I poszczególnych członków w StoreName
wyliczeniu:
Http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.storename.aspx
Z tego, co rozumiem, chcesz użyć StoreName.My
dla certyfikatów klienckich zawierających klucz prywatny, StoreName.CertificateAuthority
dla pośrednich certyfikatów CA i StoreName.Root
dla certyfikatów root CA.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-06 19:47:20