- Ajout des droits pfx

This commit is contained in:
Frogg 2026-05-09 17:51:57 +02:00
parent cfb35ae925
commit 97808ebf1b
1 changed files with 62 additions and 65 deletions

View File

@ -642,87 +642,84 @@ do_deb_sys_cert_install(){
# C'est seulement MAINTENANT qu'on peut supprimer
rm -rf "/tmp/step-config"
# 5. Planification
msg_warning "[5/6] Activation du renouvellement automatique..."
# ==================================================================
# [5/6] ATTRIBUTION DES DROITS (D'abord les droits, ensuite le cron)
# ==================================================================
msg_warning "[5/6] Configuration des groupes et accès..."
# Chemins des fichiers
local CERT_CRT="/etc/ssl/wildcard/server.crt"
local CERT_KEY="/etc/ssl/wildcard/server.key"
local CERT_PFX="/etc/ssl/wildcard/server.pfx"
# On récupère dynamiquement le groupe actuel du dossier ou du certificat existant
local CURRENT_GROUP=$(stat -c '%G' /etc/ssl/wildcard/)
# La commande utilise maintenant cette variable détectée au vol
local PFX_CMD="openssl pkcs12 -export -out $CERT_PFX -inkey $CERT_KEY -in $CERT_CRT -passout pass: && chown root:$CURRENT_GROUP $CERT_PFX && chmod 640 $CERT_PFX"
# On assemble tout dans le Cron : Renew -> PFX -> Restart Services
local STEP_BIN=$(which step)
local RENEW_CMD="$STEP_BIN certificate renew $CERT_CRT $CERT_KEY --force"
# Récupération des services à redémarrer
local RESTART_CMD=""
for SVC in $CONFIG_DEB_INSTALL_DEFAULT_CA_SERVICES; do
if systemctl is-active --quiet "$SVC"; then
RESTART_CMD="$RESTART_CMD $SVC"
fi
done
# Construction de la ligne finale
local FULL_COMMAND="$RENEW_CMD >> /var/log/cert-renew.log 2>&1 && $PFX_CMD"
if [ -n "$RESTART_CMD" ]; then
FULL_COMMAND="$FULL_COMMAND && systemctl restart $RESTART_CMD"
fi
# Injection dans la crontab
local MARKER="# $CONFIG_DEB_INSTALL_DEFAULT_CA_CRON"
(
crontab -l 2>/dev/null | sed "/$MARKER/,/$MARKER/d"
echo "$MARKER"
echo "0 0 1 * * $FULL_COMMAND"
echo "$MARKER"
) | crontab -
# Premier export immédiat pour que le fichier existe tout de suite
eval $PFX_CMD
msg_success "Cron mis à jour avec restart automatique des services."
msg_warning "[6/6] Modification des droits de lecture du certificat..."
# S'assurer que le groupe existe avant la boucle
# 1. Création du groupe technique
groupadd -f ssl-cert
# 2. On change le groupe du DOSSIER parent pour que le futur "stat" du cron le voit
chown root:ssl-cert /etc/ssl/wildcard
chmod 750 /etc/ssl/wildcard
for SVC in $CONFIG_DEB_INSTALL_DEFAULT_CA_SERVICES; do
if systemctl is-active --quiet "$SVC"; then
# On récupère l'utilisateur. On ajoute || true pour éviter que le script s'arrête si pgrep échoue
PID=$(pgrep -f "$SVC" | head -n1)
if [ -n "$PID" ]; then
SVC_USER=$(ps -o user= -p "$PID" | tr -d ' ')
if [ -n "$SVC_USER" ] && [ "$SVC_USER" != "root" ]; then
echo "🚀 Service détecté : $SVC (Utilisateur : $SVC_USER)"
# Ajout au groupe
usermod -aG ssl-cert "$SVC_USER"
# Application des droits sur la clé
chown root:ssl-cert /etc/ssl/wildcard/server.key
chmod 640 /etc/ssl/wildcard/server.key
chown root:ssl-cert /etc/ssl/wildcard/server.pfx
chmod 640 /etc/ssl/wildcard/server.pfx
# Le certificat doit être lisible (souvent déjà 644)
chmod 644 /etc/ssl/wildcard/server.crt
msg_success "Droit ajouté pour $SVC_USER sur $SVC"
# CRITIQUE : Redémarrage pour appliquer le changement de groupe
msg_warning "Redémarrage de $SVC pour appliquer les nouveaux droits..."
systemctl restart "$SVC"
msg_success "Utilisateur $SVC_USER ajouté au groupe ssl-cert"
fi
fi
fi
done
# ==================================================================
# [6/6] PLANIFICATION & GÉNÉRATION PFX
# ==================================================================
msg_warning "[6/6] Activation du renouvellement automatique..."
local CERT_CRT="/etc/ssl/wildcard/server.crt"
local CERT_KEY="/etc/ssl/wildcard/server.key"
local CERT_PFX="/etc/ssl/wildcard/server.pfx"
# DYNAMIQUE : On détecte 'ssl-cert' car on l'a appliqué au dossier juste au-dessus
local CURRENT_GROUP=$(stat -c '%G' /etc/ssl/wildcard/)
# La commande de génération PFX qui préserve les droits
local PFX_CMD="openssl pkcs12 -export -out $CERT_PFX -inkey $CERT_KEY -in $CERT_CRT -passout pass: && chown root:$CURRENT_GROUP $CERT_PFX && chmod 640 $CERT_PFX"
local STEP_BIN=$(which step)
local RENEW_CMD="$STEP_BIN certificate renew $CERT_CRT $CERT_KEY --force"
# Récupération des services à redémarrer
local RESTART_CMD=""
for SVC in $CONFIG_DEB_INSTALL_DEFAULT_CA_SERVICES; do
if systemctl is-active --quiet "$SVC"; then
RESTART_CMD="$RESTART_CMD $SVC"
fi
done
# Construction de la commande Cron
local FULL_COMMAND="$RENEW_CMD >> /var/log/cert-renew.log 2>&1 && $PFX_CMD"
[ -n "$RESTART_CMD" ] && FULL_COMMAND="$FULL_COMMAND && systemctl restart $RESTART_CMD"
# Injection Crontab
local MARKER="# $CONFIG_DEB_INSTALL_DEFAULT_CA_CRON"
(
crontab -l 2>/dev/null | sed "/$MARKER/,/$MARKER/d"
echo "$MARKER"
echo "0 0 1 * * $FULL_COMMAND"
echo "$MARKER"
) | crontab -
# EXECUTION IMMÉDIATE : On génère le PFX et on fixe les droits des fichiers existants
eval $PFX_CMD
chown root:$CURRENT_GROUP $CERT_KEY $CERT_CRT
chmod 640 $CERT_KEY
chmod 644 $CERT_CRT
# CRITIQUE : Redémarrage final pour que l'app prenne en compte son nouveau groupe
for SVC in $CONFIG_DEB_INSTALL_DEFAULT_CA_SERVICES; do
[ -n "$RESTART_CMD" ] && systemctl restart $SVC
done
msg_success "Infrastructure PKI prête. Groupe : $CURRENT_GROUP"
msg_success " "
msg_success " ################################"
msg_success " # Tout est prêt et configuré ! # "