TLS erzwingen, Verbindungen ohne TLS finden, Zertifikate ohne Neustart erneuern
MySQLSicherheitBefehl
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;Was es tut
Zeigt die TLS-Konfiguration des Servers, das Ablaufdatum des Zertifikats und ob jede Verbindung TLS nutzt; verbietet unverschlüsselte TCP-Verbindungen vollständig und erneuert Zertifikate, ohne den Server anzuhalten.
Wann einsetzen
Für Sicherheitsaudits / Compliance, vor dem Ablauf von Zertifikaten und beim Aufspüren alter Clients, die sich unverschlüsselt verbinden.
Vorsicht
require_secure_transport=ON wirkt nicht auf Unix-Socket- und Shared-Memory-Verbindungen; diese gelten als sicher. Finde Clients, die sich ohne TLS verbinden, bevor du es aktivierst, sonst schlagen sie mit Fehler 3159 fehl. ALTER INSTANCE RELOAD TLS wirkt nicht auf bestehende, nur auf neue Verbindungen; ist die Zertifikatsdatei ungültig, bricht es mit einem Fehler ab und behält das alte Zertifikat. Das automatisch erzeugte selbstsignierte Zertifikat können Clients mit VERIFY_CA / VERIFY_IDENTITY nicht verifizieren; nutze in der Produktion ein von deiner CA signiertes Zertifikat.