DBAtlas · 数据库运维图谱

强制 TLS、查找非 TLS 连接、无需重启更新证书

MySQL安全

命令

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;

作用

显示服务器 TLS 配置、证书到期日期以及每个连接是否使用 TLS;完全禁止未加密的 TCP 连接,并在不停止服务器的情况下更新证书。

适用场景

用于安全审计/合规、证书到期之前,以及追查未加密连接的遗留客户端时。

注意

require_secure_transport=ON 不影响 Unix socket 和共享内存连接;这些被视为安全连接。启用前先找出不使用 TLS 连接的客户端,否则它们会以错误 3159 失败。ALTER INSTANCE RELOAD TLS 不影响现有连接,只影响新连接;若证书文件无效会报错并保留旧证书。自动生成的自签名证书无法被使用 VERIFY_CA / VERIFY_IDENTITY 的客户端验证;生产环境请使用由你的 CA 签发的证书。

在 DBAtlas 中打开 →

相关内容