我已经在我的 ubunutu 18.04 lts 系统上安装了 mariadb。
我有一个运行正常的备份脚本,但在某个更新中它停止了工作,但我起初并没有注意到,因为当备份已经可靠地运行了很长时间时,谁还会去查看它呢。
但是现在我注意到备份已停止工作,当我尝试模拟备份命令的启动时出现错误:
错误 2026 (HY000):SSL 连接错误:证书链中的自签名证书
使用我之前使用过没有问题的命令,突然出现错误。
$ mysql -u root -p################################ -N -e 'show databases'
ERROR 2026 (HY000): SSL connection error: self signed certificate in certificate chain`
即使我只是登录,也会收到同样的错误
$ mysql -u root -p
Enter password:
ERROR 2026 (HY000): SSL connection error: self signed certificate in certificate chain
几个月前,我通过命令行在服务器上运行 mysql 时没有遇到任何问题。某些更新一定改变了这种情况,但我不知道是什么改变了它。
我真的无法用 mysql 执行任何有意义的命令,因为它不会对证书链产生疑问。
我的版本:
$ mysql -V
mysql Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
当我从工作机器连接到安装了证书的服务器时,我连接数据库没有任何问题。因此证书适用于 mysql 服务器。这似乎是一个纯粹的命令行 mysql 问题。
我已经更新了 apt-get 和 apt 中的所有内容,有 0 个可用的更新。
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-88-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Tue Mar 3 16:20:40 GMT 2020
System load: 0.89 Processes: 209
Usage of /: 5.5% of 3.58TB Users logged in: 0
Memory usage: 12% IP address for eth0: ###.###.###.###
Swap usage: 0%
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch
0 packages can be updated.
0 updates are security updates.
/etc/mysql/my.cnf
# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
#default-character-set = utf8
#ojiaergoijboij = halksjd
#nduks =- ksjdfljsd
[mysql]
ssl-ca=/etc/mysql/ssl/ca.pem
#ssl-cert=/etc/mysql/ssl/client-cert.pem
#ssl-key=/etc/mysql/ssl/client-key.pem
[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
#character-set-server = utf8
#collation-server = utf8_general_ci
#character_set_server = utf8
#collation_server = utf8_general_ci
# Import all .cnf files from configuration directory
!includedir /etc/mysql/mariadb.conf.d/
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=1
innodb_buffer_pool_size=8G
thread_cache_size=10
skip-name-resolve
#query_cache_type=1
#query_cache_limit=256k
#query_cache_min_res_unit=2k
#query_cache_size=80M
tmp_table_size=256M
max_heap_table_size=256M
query_cache_size=0
query_cache_type=0
ssl
ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem
当我验证证书时,结果一切正常。
openssl verify -CAfile /etc/mysql/ssl/ca-cert.pem /etc/mysql/ssl/server-cert.pem /etc/mysql/ssl/client-cert.pem
/etc/mysql/ssl/server-cert.pem: OK
/etc/mysql/ssl/client-cert.pem: OK
您在 /var/mail/root 中有新邮件
我可以用 mysql 标志解决此问题吗?还是我需要在 openSSL 设置中解决此问题?
我尝试过用谷歌搜索,但我能找到最接近症状的是一个来自 2012 年的问题。
答案1
最终,这是最常见的错误。这是
人类的错误,更具体地说是我。
之前,我曾注释掉 my.cnf 中的客户端证书,但不知为何却忘记注释掉根证书。
[mysql]
ssl-ca=/etc/mysql/ssl/ca.pem
#ssl-cert=/etc/mysql/ssl/client-cert.pem
#ssl-key=/etc/mysql/ssl/client-key.pem
这引发了错误。
错误 2026 (HY000):SSL 连接错误:证书链中的自签名证书
通过注释掉根证书,问题得到了解决。也许以前的 mariadb 版本更宽容。
[mysql]
#ssl-ca=/etc/mysql/ssl/ca.pem
#ssl-cert=/etc/mysql/ssl/client-cert.pem
#ssl-key=/etc/mysql/ssl/client-key.pem