应用连接数据库时报 SSL 相关错误,本地命令行却能正常登录,改连接串又出现新的报错。

把日志和配置对完,能解释这个现象的基本就这几处。客户端与服务端的加密套件不兼容;服务端开启了强制加密,客户端没有带证书;驱动版本过旧,不支持新的认证方式。

先看服务端是否强制加密

mysql -e 'show variables like \"require_secure_transport\"'

接着确认连接串的加密参数

grep -rn ssl-mode app/config/

然后用命令行验证加密连接

mysql --ssl-mode=REQUIRED -h 主机 -u 用户 -p

末了按需调整服务端加密要求

grep -n require_secure_transport /etc/my.cnf

那几天正好在做别的变更,先把时间线对齐才敢动手。

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

别只看报错消失,验证要多做一步。应用能正常建立连接,加密参数与服务端要求一致,日志不再报 SSL 错误。

补一句。把加密要求直接关掉只是绕开问题;跨网络访问数据库本来就应该加密,优先升级驱动而不是降级安全。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189