Examiner les certificats SSL pour la révocation

De nos jours, l'un des aspects les plus importants du transfert sécurisé d'informations est le cryptage. Les données transmises du client au serveur sont cryptées à l'aide d'un certificat SSL. Un certificat est une clé publique certifiée par une autorité de certification.

Tous les certificats SSL, en règle générale, sont émis pour une période limitée, après quoi ils expirent et doivent être réémis. Cependant, il peut arriver qu'un certificat puisse être révoqué avant la date d'expiration. Il existe de nombreuses raisons de révoquer le certificat SSL, la plus courante étant que la clé privée a été perdue ou compromise, les données d'enregistrement de l'entreprise modifiées, etc.

Il existe 2 façons alternatives de vérifier si un certificat SSL figure dans les listes de révocation:

  • CRL (Certificate Revocation List) - vérifie la présence du numéro de série du certificat dans la liste de révocation.
  • OCSP (Online Certificate Status Protocol) - le certificat est envoyé à un serveur spécialisé, où son état est vérifié.

Examinons ces deux méthodes plus en détail à l'aide de la console Ubuntu. Et à titre d'exemple, vérifions le certificat du domaine habr.com pour examen.

CRL


Téléchargez le certificat du domaine qui nous intéresse:

echo -n | openssl s_client -connect habr.com:443 -servername habr.com 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/habr.com.crt 

Merci à legioner pour le conseil d'ajouter le paramètre -servername - il est nécessaire pour la sélection de certificat correcte s'il y en a plusieurs (SNI) installés sur la même adresse IP.

Nous regardons les détails du certificat:

 openssl x509 -noout -text -in /tmp/habr.com.crt 

Ici, nous sommes intéressés par la section «Points de distribution CRL X509v3» «Nom complet».

Téléchargez la liste CLR à partir de ce lien:

 wget http://crl.comodoca.com/COMODORSADomainValidationSecureServerCA.crl 

Nous choisissons le numéro de série du certificat:

 openssl x509 -in /tmp/habr.com.crt -noout -serial 

Nous regardons pour voir si ce nombre est dans la liste CRL:

 openssl crl -inform DER -text -in COMODORSADomainValidationSecureServerCA.crl | grep "90E58B0601C3AD98F07AEE092041C437" 

Si rien n'a été trouvé, le certificat n'est pas révoqué.

OCSP


Nous afficherons le certificat du domaine qui nous intéresse et la chaîne de certificats intermédiaires:

 echo -n | openssl s_client -connect habr.com:443 -showcerts 

Enregistrez le certificat de domaine et le certificat intermédiaire (le code entre les lignes ----- BEGIN CERTIFICATE ----- et ----- END CERTIFICATE -----) dans les fichiers:

 /tmp/habr.com.crt /tmp/intermediate.crt 

Définissez un serveur OCSP:

 openssl x509 -in /tmp/habr.com.crt -noout -ocsp_uri 

Nous enverrons une demande au serveur OCSP pour vérifier la révocation du certificat:

 openssl ocsp -url http://ocsp.comodoca.com -issuer /tmp/intermediate.crt -cert /tmp/habr.com.crt -text 

Si tout est correctement spécifié, le serveur OCSP doit renvoyer des informations sur le certificat.

Voici les dernières lignes d'intérêt:

 Response verify OK /tmp/habr.com.crt: good 

L'absence d'un certificat dans la liste des certificats révoqués est indiquée par la valeur «bon», si le certificat a été révoqué, la valeur sera «révoquée».

Automatisation


La vérification manuelle de la révocation des certificats SSL n'est pas toujours pratique, de sorte que le processus de vérification peut être automatisé.

Pour ce faire, nous prenons le script ssl-check-revoc.sh prêt à l'emploi avec Github , qui vérifie les certificats à l'aide de la méthode CRL:

 wget https://raw.githubusercontent.com/o-pod/security/master/ssl-check-revoc.sh 

Ensuite, rendez le script exécutable:

 chmod a+x ssl-check-revoc.sh 

Vous pouvez maintenant vérifier à la fois les certificats déjà installés pour le domaine et ceux stockés localement dans des fichiers (option -f):

 ./ssl-check-revoc.sh habr.com -v 

Zabbix


Le script ssl-check-revoc.sh peut vérifier les certificats non seulement à partir de la console, mais il est également tout à fait approprié comme vérificateur pour Zabbix, de sorte que tout le sale travail de suivi des certificats arrivant à la liste de révocation peut être confié au système de surveillance.

Nous allons dans la configuration Zabbix /etc/zabbix/zabbix_server.conf et voyons où se trouvent les scripts pour les vérifications externes:

 ExternalScripts=/etc/zabbix/externalscripts 

Nous copions notre script dans ce répertoire et redémarrons Zabbix:

 sudo cp ssl-check-revoc.sh /etc/zabbix/externalscripts/ sudo systemctl restart zabbix-server 

Nous allons dans l'interface Web et créons un modèle (Configuration >> Modèles >> Créer un modèle). Pour le nom du modèle, spécifiez «Vérification SSL du modèle». Ensuite, à l'intérieur du modèle, créez un élément «Certificat SSL dans la liste de révocation» (Élément), spécifiez «ssl-check-revoc.sh [{HOST.NAME}]» comme clé, avec le type de vérification «Vérification externe». L'intervalle d'inspection peut être réglé à votre discrétion, en fonction de la criticité du projet.



Vous aurez également besoin de deux déclencheurs:

1. Pour signaler la révocation du certificat "Le certificat pour le domaine {HOST.NAME} est dans la liste de révocation"
Expression: "{Vérification SSL personnalisée du modèle: ssl-check-revoc.sh [{HOST.NAME}]. Last ()} = 1"



2. Pour signaler une erreur en cas de problème (par exemple, il y a des problèmes avec le serveur CLR, etc.) "Erreur de vérification du certificat pour le domaine {HOST.NAME}"
Expression: "{Vérification SSL personnalisée du modèle: ssl-check-revoc.sh [{HOST.NAME}]. Last ()} = 2"



N'oubliez pas dans les actions (Configuration >> Actions) de configurer la méthode de notification en cas de déclencheurs.

Reste maintenant à créer des hôtes, dont nous vérifierons régulièrement les certificats (Configuration >> Hôtes >> Créer hôte). Dans l'onglet Modèles, liez notre modèle de modèle de vérification SSL.



Et c'est tout! Vous pouvez dormir tranquillement: si le certificat SSL de votre domaine tombe dans la liste des révoqués, Zabbix vous en informera immédiatement.

Source: https://habr.com/ru/post/fr417521/


All Articles