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

Imposer TLS, trouver les connexions sans TLS, renouveler les certificats sans redémarrage

MySQLSécurité

Commande

SELECT @@require_secure_transport, @@tls_version, @@ssl_ca, @@ssl_cert;
SELECT * FROM performance_schema.tls_channel_status
WHERE PROPERTY IN ('Enabled', 'Current_tls_version', 'Current_tls_cert', 'Ssl_server_not_after');

-- Active connections and their TLS versions (empty = no TLS)
SELECT t.PROCESSLIST_USER AS user, t.PROCESSLIST_HOST AS host, t.CONNECTION_TYPE, sv.VARIABLE_VALUE AS tls_version
FROM performance_schema.threads t
LEFT JOIN performance_schema.status_by_thread sv ON sv.THREAD_ID = t.THREAD_ID AND sv.VARIABLE_NAME = 'Ssl_version'
WHERE t.TYPE = 'FOREGROUND' AND t.PROCESSLIST_USER IS NOT NULL;

SET PERSIST require_secure_transport = ON;
-- After copying the new certificate files
ALTER INSTANCE RELOAD TLS;

Ce que fait la commande

Affiche la configuration TLS du serveur, la date d'expiration du certificat et si chaque connexion utilise TLS ; interdit totalement les connexions TCP non chiffrées et renouvelle les certificats sans arrêter le serveur.

Quand l'utiliser

Pour les audits de sécurité / la conformité, avant l'expiration d'un certificat et pour repérer les anciens clients qui se connectent sans chiffrement.

Attention

require_secure_transport=ON n'affecte pas les connexions par socket Unix et mémoire partagée ; elles sont considérées comme sécurisées. Trouvez les clients qui se connectent sans TLS avant de l'activer, sinon ils échouent avec l'erreur 3159. ALTER INSTANCE RELOAD TLS n'affecte pas les connexions existantes, seulement les nouvelles ; si le fichier de certificat est invalide, la commande échoue et conserve l'ancien certificat. Le certificat auto-signé généré automatiquement ne peut pas être vérifié par les clients en VERIFY_CA / VERIFY_IDENTITY ; utilisez en production un certificat signé par votre CA.

Ouvrir dans DBAtlas →

Voir aussi