TLS / certificat expiré
Symptôme
'certificate has expired', 'SSL handshake failed', les clients ne peuvent soudain plus se connecter (sans modification de code).
1. Où cela casse-t-il : serveur, client ou CA ?
Est-ce le certificat serveur qui a expiré, un certificat client ou une CA de la chaîne ? Le symptôme est généralement « cela marchait hier, plus aujourd'hui, aucun code n'a changé ».
2. Vérifiez l'expiration
Lisez la date d'expiration du certificat directement sur le serveur (méthode rapide, indépendante de la base).
PostgreSQL
openssl s_client -connect host:5432 -starttls postgres </dev/null 2>/dev/null | openssl x509 -noout -datesMongoDB
openssl s_client -connect host:27017 </dev/null 2>/dev/null | openssl x509 -noout -enddateRedis
openssl s_client -connect host:6379 </dev/null 2>/dev/null | openssl x509 -noout -enddate3. Installez et chargez le nouveau certificat
Remplacez le certificat et, dans la plupart des cas, rechargez le service sans le redémarrer.
PostgreSQL
-- Renew ssl_cert_file/ssl_key_file, then:
SELECT pg_reload_conf();MySQL
ALTER INSTANCE RELOAD TLS;SQL Server
-- SQL Server Configuration Manager > Certificate; a service restart is requiredMongoDB
// Renew the net.tls.certificateKeyFile file (at the same path), then load it without a restart (5.0+):
db.adminCommand({rotateCertificates: 1})Redis
CONFIG SET tls-cert-file /path/new.crt
CONFIG SET tls-key-file /path/new.keyElasticsearch
# ES watches the certificate/key files (PEM, PKCS#12) defined under xpack.security.*.ssl and
# reloads them automatically when the file at the SAME path changes (no restart needed).
# If the path, file name or keystore password changes, a rolling restart is required.
# Note: POST _nodes/reload_secure_settings is only for reloadable keystore settings, not for TLS certificates.
# Verify: check the new expiry date with openssl s_client and look in the ES logs for
# an entry showing the certificate was reloaded.4. Vérifiez
Confirmez avec la commande openssl ci-dessus que le handshake TLS réussit avec le nouveau certificat et que l'expiration a été repoussée ; connectez-vous de bout en bout avec un client.
5. Définitif : plus jamais
Mettez en place une alerte 30 jours avant l'expiration des certificats ; utilisez le renouvellement automatique (ACME/Let's Encrypt, HashiCorp Vault, cert-manager). Automatisez le rechargement après renouvellement.