Pregunta

Tengo un certificado determinado instalado en mi servidor.Ese certificado tiene fechas válidas y parece perfectamente válido en el complemento MMC de certificados de Windows.

Sin embargo, cuando intento leer el certificado para usarlo en una HttpRequest, no puedo encontrarlo.Aquí está 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 "sólo certificados válidos".La colección devuelta está vacía.

Lo raro es que si paso false, que indica que se aceptan certificados no válidos, 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 Find ¡El método lo trata como no válido!¿Por qué?

¿Fue útil?

Solución

Intente verificar la cadena de certificados usando el Cadena X509 clase.Esto puede indicarle exactamente por qué el certificado no se considera válido.

Como sugirió Erickson, es posible que su X509Store no tenga el certificado confiable de la CA en la cadena.Si utilizó OpenSSL u otra herramienta para generar su propia CA autofirmada, debe agregar el certificado público de esa CA a X509Store.

Otros consejos

¿El certificado del emisor está presente en X509Store?Un certificado sólo es válido si está firmado por alguien de confianza.

¿Es este un certificado de una CA real o uno que usted mismo firmó?Las herramientas de firma de certificados que suelen utilizar los desarrolladores, como OpenSSL, no añaden algunas extensiones importantes de forma predeterminada.

Creo que los certificados x509 están vinculados a un usuario en particular.¿Podría no ser válido porque en el código estás accediendo como un usuario diferente al que fue creado?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top