c# certificate x509certificate certificatestore

Obtenga una lista de certificados del almacén de certificados en C#



certificate x509certificate (4)

La forma más sencilla de hacerlo es abriendo el almacén de certificados que desea y luego usando X509Certificate2UI .

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); var selectedCertificate = X509Certificate2UI.SelectFromCollection( store.Certificates, "Title", "MSG", X509SelectionFlag.SingleSelection);

Más información en X509Certificate2UI en MSDN .

Para una aplicación segura, necesito seleccionar un certificado en un diálogo. ¿Cómo puedo acceder al almacén de certificados o una parte de él (por ejemplo, storeLocation="Local Machine" y storeName="My" ) usando C # y obtener una colección de todos los certificados desde allí? Gracias de antemano por tu ayuda.


Prueba esto:

//using System.Security.Cryptography.X509Certificates; public static X509Certificate2 selectCert(StoreName store, StoreLocation location, string windowTitle, string windowMsg) { X509Certificate2 certSelected = null; X509Store x509Store = new X509Store(store, location); x509Store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col = x509Store.Certificates; X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(col, windowTitle, windowMsg, X509SelectionFlag.SingleSelection); if (sel.Count > 0) { X509Certificate2Enumerator en = sel.GetEnumerator(); en.MoveNext(); certSelected = en.Current; } x509Store.Close(); return certSelected; }


Sí: la propiedad X509Store.Certificates devuelve una instantánea del almacén de certificados X.509.


X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); foreach (X509Certificate2 certificate in store.Certificates){ //TODO''s }