DBAtlas · Atlas d'exploitation des bases de données

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 -dates

MongoDB

openssl s_client -connect host:27017 </dev/null 2>/dev/null | openssl x509 -noout -enddate

Redis

openssl s_client -connect host:6379 </dev/null 2>/dev/null | openssl x509 -noout -enddate

3. 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 required

MongoDB

// 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.key

Elasticsearch

# 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.

Ouvrir dans DBAtlas →