You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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未包含完整证书链,或私钥文件在复制过程中损坏。

分步解决步骤

  1. 修正配置文件错误
    编辑/etc/my.cnf,修正客户端私钥路径:

    [client-mariadb]
    ssl_cert=/etc/my.cnf.d/client/fullchain.pem
    ssl_key=/etc/my.cnf.d/client/privkey.pem
    
  2. 设置证书文件权限
    确保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
    
  3. 添加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。

  4. 调整TLS版本兼容
    在服务器配置段[mariadb]添加兼容CentOS 7的TLS版本:

    [mariadb]
    tls_version=TLSv1.2
    
  5. 验证SSL配置与证书完整性
    用OpenSSL测试服务器SSL握手:

    openssl s_client -connect your-domain:3306 -tls1_2
    

    若输出包含Verify return code: 0 (ok),说明证书链正常。

  6. 重启服务并测试登录

    service mariadb restart
    

    使用强制SSL模式登录:

    mysql --ssl-mode=REQUIRED -u your-user -p
    

    登录后执行SHOW STATUS LIKE 'Ssl_cipher';,返回非空值则表示SSL连接成功。

  7. 额外注意
    若用localhost登录,需添加--ssl-verify-server-cert=false(证书绑定域名而非localhost),或直接使用证书对应的域名连接服务器。

内容的提问来源于stack exchange,提问作者Vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:51:36