CentOS7+MariaDB10.6配置Let's Encrypt SSL遇Error2026握手失败求助
MariaDB SSL握手失败(Error 2026)成因与解决办法
核心成因分析
- 配置文件拼写错误:客户端配置段
[client-mariadb]中的ssl_key路径写错,应为privkey.pem而非privkey prm,直接导致客户端无法加载私钥,触发握手失败。 - 证书权限不足:MariaDB运行用户(默认
mysql)无证书文件/目录的读取权限,无法正常加载SSL证书。 - 缺少CA证书验证:客户端未配置CA根证书,无法验证Let's Encrypt服务器证书的合法性。
- TLS版本不兼容:CentOS 7默认OpenSSL版本(1.0.1e)不支持TLSv1.3,若MariaDB 10.6默认启用TLSv1.3,会出现版本匹配失败。
- 证书文件不完整:复制的
fullchain.pem未包含完整证书链,或私钥文件在复制过程中损坏。
分步解决步骤
修正配置文件错误
编辑/etc/my.cnf,修正客户端私钥路径:[client-mariadb] ssl_cert=/etc/my.cnf.d/client/fullchain.pem ssl_key=/etc/my.cnf.d/client/privkey.pem设置证书文件权限
确保MariaDB用户能读取证书:# 更改证书目录所属用户 chown -R mysql:mysql /etc/my.cnf.d/server/ /etc/my.cnf.d/client/ # 设置私钥文件严格权限(仅所有者可读) chmod 600 /etc/my.cnf.d/server/privkey.pem /etc/my.cnf.d/client/privkey.pem # 证书文件设置可读权限 chmod 644 /etc/my.cnf.d/server/fullchain.pem /etc/my.cnf.d/client/fullchain.pem添加CA证书验证
在客户端配置段添加CentOS 7默认CA bundle路径:[client-mariadb] ssl_ca=/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem或从Certbot生成目录
/etc/letsencrypt/live/domain1/复制chain.pem到客户端目录,指定ssl_ca=/etc/my.cnf.d/client/chain.pem。调整TLS版本兼容
在服务器配置段[mariadb]添加兼容CentOS 7的TLS版本:[mariadb] tls_version=TLSv1.2验证SSL配置与证书完整性
用OpenSSL测试服务器SSL握手:openssl s_client -connect your-domain:3306 -tls1_2若输出包含
Verify return code: 0 (ok),说明证书链正常。重启服务并测试登录
service mariadb restart使用强制SSL模式登录:
mysql --ssl-mode=REQUIRED -u your-user -p登录后执行
SHOW STATUS LIKE 'Ssl_cipher';,返回非空值则表示SSL连接成功。额外注意
若用localhost登录,需添加--ssl-verify-server-cert=false(证书绑定域名而非localhost),或直接使用证书对应的域名连接服务器。
内容的提问来源于stack exchange,提问作者Vijay
相关产品推荐
相关产品推荐

