2010-08-31 5 views
7

Je dois écrire un outil qui valide si un certificat X509 est valide ou non (entrée = chemin de cert/sujet et mot de passe). Comment puis je faire ça? Je ne sais pas grand chose sur les certificats ...Comment valider le certificat X509?

+0

Un certificat X.509 n'est pas protégé par mot de passe (sa clé privée correspondante l'est généralement). Si vous avez déjà le chemin de certification, la plupart du travail est terminé (si vous faites confiance à l'ancre de confiance à laquelle conduit ce chemin). – Bruno

+0

@Bruno: la validation correcte des certificats est "un peu" plus que la simple vérification des signatures. L'utilisation des clés, la période de validité, les contraintes de chemin doivent également être vérifiées. Ensuite, la révocation (en utilisant OCSP et CRL) doit être vérifiée. Et ainsi de suite ... –

Répondre

16

Jetez un oeil à X509Certificate2.Verify()

+2

Pour ajouter, si vous avez besoin de détails sur la raison pour laquelle un certificat a échoué, vous pouvez générer la chaîne suivante: http://msdn.microsoft.com/fr-fr/library/system.security.cryptography.x509certificates.x509chain.aspx – Oliver

2

En général, RFC 3280 inclut des instructions presque complètes sur la façon d'effectuer la validation, mais ces instructions sont très non-triviales. De plus, vous devrez lire RFC 2560 (OCSP) et implémenter le client OCSP.

Pour la plupart des tâches, vous trouverez notre TElX509CertificateValidator component parfaitement adapté. Il vérifie les chemins de certificat, la révocation de CRL et OCSP (et vérifie également la validité des CRL et des réponses OCSP). Il est assez flexible et puissant et vous permet d'effectuer des contrôles supplémentaires et plus approfondis à chaque étape. En outre, ce composant peut fonctionner avec les stockages de certificats Windows et tous les autres certificats, chaînes de certificats et stockages que vous pourriez avoir dans les fichiers ou dans la mémoire.

+2

RFC 3280 a été rendu obsolète par la RFC 5280: http://tools.ietf.org/html/rfc5280 – Bruno

+0

Bon point, merci. –

Questions connexes