2010-08-31 28 views
7

Tengo que escribir una herramienta que valida si un certificado X509 es válido o no (entrada = ruta certificada/asunto y contraseña). ¿Cómo puedo hacer eso? No sé mucho sobre certs ...¿Cómo validar el certificado X509?

+0

Un certificado X.509 no está protegido por contraseña (normalmente es la clave privada correspondiente). Si ya tiene la ruta de certificación, la mayor parte del trabajo está hecho (si confía en el delimitador de confianza al que conduce esa ruta cert). – Bruno

+0

@ Bruno: la validación correcta del certificado es "un poco" más que solo verificar las firmas. También se deben verificar el uso de la clave, el período de validez y las restricciones de ruta. Luego se debe verificar la revocación (usando OCSP y CRL). Y así sucesivamente ... –

Respuesta

16

Tome un vistazo a X509Certificate2.Verify()

+2

Para agregar, si necesita detalles sobre por qué falló un certificado, puede generar la cadena: http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509chain.aspx – Oliver

2

En general, RFC 3280 incluye instrucciones casi completas sobre cómo realizar la validación, sin embargo esas instrucciones no son triviales. Además, necesitaría leer RFC 2560 (OCSP) e implementar el cliente OCSP.

Para la mayoría de las tareas, encontrará nuestro TElX509CertificateValidator component perfectamente adecuado. Controla las rutas de los certificados, la revocación de CRL y OCSP (y también verifica la validez de las CRL y las respuestas OCSP). Es lo suficientemente flexible y potente y le permite realizar comprobaciones adicionales y más profundas en cada paso. Además, este componente puede funcionar con almacenes de certificados de Windows y cualquier otro certificado, cadenas de certificados y almacenamientos que pueda tener en archivos o en la memoria.

+2

RFC 3280 ha sido obsoleto por RFC 5280: http://tools.ietf.org/html/rfc5280 – Bruno

+0

Buen punto, gracias. –

Cuestiones relacionadas