open installed check certificates c# .net wcf certificate makecert

c# - check - windows 10 view installed certificates



¿Cómo puedo instalar un certificado en la tienda local de máquinas utilizando programáticamente c#? (4)

Tengo un certificado generado a través de MakeCert. Quiero usar este certificado para la seguridad de mensajes WCF usando PeerTrust. ¿Cómo puedo instalar el certificado mediante programación en el almacén de certificados de máquina local de "personas de confianza" utilizando c # o .NET?

Tengo un archivo CER, pero también puedo crear un PFX.


En lugar de instalar el certificado en LocalMachine que requiere privilegios elevados, puede agregarlo a "CurrentUser" (funciona para mí).

X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadWrite); store.Add(cert); //where cert is an X509Certificate object store.Close();


Lo siguiente funciona bien para mí:

private static void InstallCertificate(string cerFileName) { X509Certificate2 certificate = new X509Certificate2(cerFileName); X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadWrite); store.Add(certificate); store.Close(); }


Tuve que usar X509KeyStorageFlags. PersistKeySet | X509KeyStorageFlags. Indicadores MachineKeySet para resolver el error "Keyset no existe" que ocurrió más tarde cuando se intentó usar el certificado:

X509Certificate2 certificate = new X509Certificate2(pfxPath, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet); using (X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine)) { store.Open(OpenFlags.ReadWrite); store.Add(certificate); store.Close(); }

Gracias a este artículo: clave privada de certificado en certificado de tienda no legible


Yo creo que esto es correcto:

using (X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine)) { store.Open(OpenFlags.ReadWrite); store.Add(cert); //where cert is an X509Certificate object }