Aller au contenu

Runbook — Certificat SSL expiré sur un sous-domaine

Sévérité : Majeure (navigateurs affichent "non sécurisé")
Temps de résolution attendu : 10 à 30 min

Symptômes

  • Visiteur voit l'avertissement Chrome "NET::ERR_CERT_DATE_INVALID"
  • Lighthouse / curl --insecure requis pour accéder
  • Alerte Uptime Kuma "Certificate is about to expire" (configure pour 14j avant)

Diagnostic

```bash

Date d'expiration du cert

echo | openssl s_client -connect {slug}.cavalmanager.fr:443 -servername {slug}.cavalmanager.fr 2>/dev/null \ | openssl x509 -noout -dates

Lister les certs NPM

curl -s -u admin@cavalmanager.fr:$NPM_PASSWORD \ http://192.168.1.117:81/api/nginx/certificates \ | python3 -m json.tool | grep -E "(domain_names|expires_on|nice_name)" ```

Procédure

Cas 1 : NPM Let's Encrypt auto-renewal a échoué

```bash

Connexion NPM web UI

http://192.168.1.117:81 → admin@cavalmanager.fr / $NPM_PASSWORD

SSL Certificates → trouver le cert → Renew

Ou via API

CERT_ID=42 # ID du cert curl -X POST -u admin@cavalmanager.fr:$NPM_PASSWORD \ http://192.168.1.117:81/api/nginx/certificates/$CERT_ID/renew ```

Cas 2 : Le sous-domaine pointe vers le mauvais serveur

  • DNS Cloudflare → vérifier que {slug}.cavalmanager.fr pointe vers IP NPM (192.168.1.117 via tunnel)
  • Si correction DNS : attendre 5 min propagation puis re-renew

Cas 3 : Rate-limit Let's Encrypt (5 certs/semaine/domain)

  • Patienter (compteur reset hebdo)
  • En dépannage : utiliser cert wildcard *.cavalmanager.fr (déjà créé)

Vérification

```bash echo | openssl s_client -connect {slug}.cavalmanager.fr:443 2>/dev/null \ | openssl x509 -noout -enddate

notAfter=... attendu = ~90j depuis aujourd'hui

```

Prévention

  • Uptime Kuma config : alerte 14j avant expiration de chaque cert
  • Provisioning auto d'un nouveau tenant crée le cert via NPM API (cf admin/server.js)