Tengo un certificado dado instalado en mi servidor. Ese certificado tiene fechas válidas y parece perfectamente válido en el complemento MMC de certificados de Windows.¿Por qué este certificado X.509 no se considera válido?
Sin embargo, cuando intento leer el certificado, para usarlo en una HttpRequest, no puedo encontrarlo. Este es el código utilizado:
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);
xxx
es el número de serie; el argumento true
significa "solo certificados válidos". La colección devuelta está vacía.
Lo extraño es que si paso false
, indicando que los certificados no válidos son aceptables, la colección contiene un elemento — el certificado con el número de serie especificado.
En conclusión: el certificado parece válido, pero el método Find
lo considera no válido. ¿Por qué?
Los certificados de cadena están presentes, pero de alguna manera no fueron accesibles para este usuario. Utilicé este código de muestra de MSDN para verificar el estado de la cadena: http://tinyurl.com/4wfnng. Este código recupera diferentes estados dependiendo del usuario. Intentaré reinstalar los certificados. Gracias. – pvieira