client_pki : recharger le vrai consommateur au renouvellement de cert
Bug latent de flotte : cert-renewer rechargeait un service nommé d'après le cert (%i = FQDN, inexistant) au lieu du consommateur réel → nginx/postfix/ dovecot/slapd servaient l'ancien cert jusqu'à expiration. Symptôme : cert edge périmé en mémoire → échec TLS OIDC → login SSO cassé. Correctif : client_pki_reload_services (vrais consommateurs), par groupe. Fix immédiat de l'incident : reload nginx sur l'edge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
c5df8fac4a
commit
94c9277c3d
3 changed files with 21 additions and 0 deletions
11
CHANGELOG.md
11
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 +
|
||||
|
|
|
|||
|
|
@ -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: []
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue