diff --git a/CHANGELOG.md b/CHANGELOG.md index a31a77b..bb964f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ ## 2026-07-04 +### Corrigé +- **Renouvellement de cert : recharger le VRAI consommateur (bug latent de flotte).** Le + `cert-renewer@.service` (client_pki) renouvelait le cert sur disque mais son `ExecStartPost` + rechargeait un service nommé *d'après le cert* (`%i` = FQDN), inexistant → **nginx (et postfix, + dovecot, slapd) n'étaient jamais rechargés** et servaient l'**ancien cert jusqu'à expiration**. + Symptôme vécu : cert edge expiré en mémoire (renouvelé sur disque), échec TLS de l'échange + code→jeton OIDC → **login Grafana/SSO cassé** (tous les services derrière l'edge). Correctif : + `client_pki_reload_services` (liste des vrais consommateurs), câblée par groupe (edge→nginx, + mail→postfix/dovecot, annuaire→slapd). Appliqué + vérifié sur les 4 hôtes. Fix immédiat de + l'incident : `systemctl reload nginx` sur l'edge. + ### Ajouté - **UI des logs Loki : dashboard Grafana provisionné.** Loki n'a pas d'UI ; son UI est Grafana. Ajout d'un **dashboard « Journaux de la flotte »** (dossier Set-OPS) : sélecteur d'hôte multi + diff --git a/roles/client_pki/defaults/main.yml b/roles/client_pki/defaults/main.yml index 588b894..8599f22 100644 --- a/roles/client_pki/defaults/main.yml +++ b/roles/client_pki/defaults/main.yml @@ -29,3 +29,8 @@ client_pki_depot_cle_url: "https://packages.smallstep.com/keys/apt/repo-signing- client_pki_depot_cle_fichier: "/etc/apt/keyrings/smallstep.asc" client_pki_depot_uri: "https://packages.smallstep.com/stable/debian" client_pki_depot_suite: "debs" + +# Services a recharger apres un renouvellement de cert : les VRAIS consommateurs +# (nginx sur l'edge, postfix/dovecot sur le mail, slapd sur l'annuaire). Sans ca, +# le cert est renouvele sur disque mais le service sert l'ancien jusqu'a un reload. +client_pki_reload_services: [] diff --git a/roles/client_pki/templates/cert-renewer@.service.j2 b/roles/client_pki/templates/cert-renewer@.service.j2 index dbdc0c0..04a1cc7 100644 --- a/roles/client_pki/templates/cert-renewer@.service.j2 +++ b/roles/client_pki/templates/cert-renewer@.service.j2 @@ -14,7 +14,12 @@ Environment=CERT_LOCATION={{ client_pki_steppath }}/certs/%i.crt Environment=KEY_LOCATION={{ client_pki_steppath }}/certs/%i.key ExecCondition=/usr/bin/step certificate needs-renewal ${CERT_LOCATION} ExecStart=/usr/bin/step ca renew --force ${CERT_LOCATION} ${KEY_LOCATION} +{% if client_pki_reload_services | default([]) | length > 0 %} +# Recharge les VRAIS consommateurs du cert (nginx, postfix…), pas un service nomme d'apres le cert. +ExecStartPost=/usr/bin/env sh -c "{% for svc in client_pki_reload_services %}systemctl try-reload-or-restart {{ svc }}; {% endfor %}true" +{% else %} ExecStartPost=/usr/bin/env sh -c "! systemctl --quiet is-active %i.service || systemctl try-reload-or-restart %i" +{% endif %} [Install] WantedBy=multi-user.target