- Ajout des droits pfx
This commit is contained in:
parent
cfb35ae925
commit
97808ebf1b
127
func/deb_sys.sh
127
func/deb_sys.sh
|
|
@ -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é ! # "
|
||||
|
|
|
|||
Loading…
Reference in New Issue