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