Forzar TLS, encontrar conexiones sin TLS y renovar certificados sin reinicio
MySQLSeguridadComando
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;Qué hace
Muestra la configuración TLS del servidor, la fecha de caducidad del certificado y si cada conexión usa TLS; prohíbe por completo las conexiones TCP sin cifrar y renueva los certificados sin detener el servidor.
Cuándo usarlo
Para auditorías de seguridad / cumplimiento, antes de que caduque el certificado y al rastrear clientes heredados que se conectan sin cifrado.
Precaución
require_secure_transport=ON no afecta a las conexiones por socket Unix ni por memoria compartida; esas cuentan como seguras. Encuentre los clientes que se conectan sin TLS antes de habilitarlo; de lo contrario fallan con el error 3159. ALTER INSTANCE RELOAD TLS no afecta a las conexiones existentes, solo a las nuevas; si el archivo de certificado no es válido, da error y conserva el certificado anterior. El certificado autofirmado generado automáticamente no puede ser verificado por clientes con VERIFY_CA / VERIFY_IDENTITY; en producción use un certificado firmado por su CA.