mirror of
https://github.com/tips-of-mine/gestion-certificats2.git
synced 2025-06-28 01:18:42 +02:00
56 lines
2.0 KiB
Bash
56 lines
2.0 KiB
Bash
#!/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 <cert_base_name> <functional_perimeter_name>"
|
|
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
|