#!/bin/bash # Ce script révoque un certificat simple émis par un CA intermédiaire. # Il met également à jour la CRL (Certificate Revocation List) du CA émetteur. # Il est appelé par l'application PHP. # Arguments : # $1: Nom du certificat à révoquer (ex: www.finance.cert) # $2: Nom du périmètre fonctionnel (pour trouver le CA intermédiaire qui l'a émis) CERT_BASE_NAME="$1" # Ex: www.finance.cert (sans l'extension .pem) FUNCTIONAL_PERIMETER_NAME="$2" if [ -z "$CERT_BASE_NAME" ] || [ -z "$FUNCTIONAL_PERIMETER_NAME" ]; then echo "Usage: $0 " exit 1 fi INTERMEDIATE_CA_DIR="/opt/tls/intermediate/$FUNCTIONAL_PERIMETER_NAME" INTERMEDIATE_CNF="$INTERMEDIATE_CA_DIR/openssl.cnf" CERT_PATH="$INTERMEDIATE_CA_DIR/certs/${CERT_BASE_NAME}.cert.pem" CRL_PATH="$INTERMEDIATE_CA_DIR/crl/crl.pem" echo "Démarrage de la révocation du certificat '$CERT_BASE_NAME' pour le périmètre '$FUNCTIONAL_PERIMETER_NAME'..." # Vérifier si le certificat existe physiquement et si le CA intermédiaire est prêt if [ ! -f "$CERT_PATH" ]; then echo "Erreur: Le certificat '$CERT_PATH' n'existe pas." exit 1 fi if [ ! -f "$INTERMEDIATE_CNF" ]; then echo "Erreur: Le fichier de configuration OpenSSL pour le CA intermédiaire '$FUNCTIONAL_PERIMETER_NAME' n'existe pas." exit 1 fi # Révoquer le certificat # Utilise -batch pour éviter les invites interactives openssl ca -batch -config "$INTERMEDIATE_CNF" -revoke "$CERT_PATH" # Vérifier le succès de la révocation via le code de sortie if [ $? -ne 0 ]; then echo "Erreur: La révocation du certificat '$CERT_BASE_NAME' a échoué." exit 1 fi echo "Certificat '$CERT_BASE_NAME' révoqué avec succès." # Mettre à jour la CRL (liste de révocation de certificats) openssl ca -batch -config "$INTERMEDIATE_CNF" -gencrl -out "$CRL_PATH" if [ $? -ne 0 ]; then echo "Avertissement: La génération de la CRL a échoué. Veuillez vérifier manuellement." else echo "CRL mise à jour et disponible à : $CRL_PATH" fi