无法通过命令行连接到 mysql,证书链中的自签名证书

无法通过命令行连接到 mysql,证书链中的自签名证书

我已经在我的 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

相关内容