Ubuntu服务器使用自签名证书配置MariaDB SSL连接报2026错如何解决
问题排查与解决步骤
错误原因说明
你遇到的报错包含两个核心问题:服务端证书的公用名(CN)和客户端连接使用的地址不匹配、证书信任链校验失败,按照以下步骤逐一排查:
步骤1:校验服务端证书的CN配置
生成服务端证书时,openssl req交互阶段填写的Common Name必须和客户端连接时使用的主机名/IP完全一致,否则会触发名称不匹配报错。
执行以下命令查看服务端证书的CN值:
openssl x509 -in /etc/mysql/ssl/server-cert.pem -text -noout | grep "Subject:"
如果输出的CN字段和你连接MariaDB时用的地址不一致,重新生成服务端证书,填写正确的CN即可。
步骤2:验证证书信任链
确认客户端配置的ssl-ca文件就是签发服务端证书的CA证书,不要混用不同CA生成的文件。执行以下命令验证证书配对有效性:
# 验证服务端证书和CA是否匹配 openssl verify -CAfile /etc/mysql/ssl/ca-cert.pem /etc/mysql/ssl/server-cert.pem # 验证客户端证书和CA是否匹配 openssl verify -CAfile /etc/mysql/ssl/ca-cert.pem /etc/mysql/ssl/client-cert.pem
命令返回ok表示证书配对正常,返回错误则需要重新签发对应证书。
步骤3:修正证书文件权限
证书文件权限配置错误也会触发校验失败:
- 服务端
server-key.pem权限必须为600,所属用户为mysql:
chmod 600 /etc/mysql/ssl/server-key.pem chown mysql:mysql /etc/mysql/ssl/server-key.pem
- 客户端的
client-key.pem权限需设为600,保证执行mysql命令的用户可读所有客户端证书文件。
步骤4:临时测试(可选)
如果是内部网络环境,不需要严格校验证书名称,可以在50-client.cnf中添加以下配置关闭CN校验,降低安全等级实现连接:
ssl-verify-server-cert = 0
也可以在连接时临时加参数测试:
mysql -u 你的用户名 -p --ssl-verify-server-cert=0
如果能正常连接即可确认问题仅为证书CN不匹配。
步骤5:生效配置
所有修改完成后重启MariaDB服务:
systemctl restart mariadb
重新测试连接即可。
内容的提问来源于stack exchange,提问作者Al Bongo
相关产品推荐
相关产品推荐

