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
}