使用证书时Mysql SSL连接特定的问题

使用证书时Mysql SSL连接特定的问题,mysql,linux,digital-ocean,Mysql,Linux,Digital Ocean,问题:当我尝试使用证书时,我无法在远程MySql服务器和本地计算机之间建立连接 Mysql版本:版本14.14发行版5.7.31,适用于Linux(x86_64),使用EditLine包装器 本图18.04.3 LTS 我已经在新的Ubuntu服务器上创建了新的Mysql实例。我已通过脚本创建用户: CREATE USER 'sammy'@'MY_COMPUTER_IP' IDENTIFIED WITH mysql_native_password BY 'password'; 当我键入时,

问题:当我尝试使用证书时,我无法在远程MySql服务器和本地计算机之间建立连接

  • Mysql版本:版本14.14发行版5.7.31,适用于Linux(x86_64),使用EditLine包装器
  • 本图18.04.3 LTS
我已经在新的Ubuntu服务器上创建了新的Mysql实例。我已通过脚本创建用户:

CREATE USER 'sammy'@'MY_COMPUTER_IP' IDENTIFIED WITH mysql_native_password BY 'password';
当我键入
时,显示像“%ssl%”这样的全局变量我明白了:

+---------------+--------------------------------+
| Variable_name | Value                          |
+---------------+--------------------------------+
| have_openssl  | YES                            |
| have_ssl      | YES                            |
| ssl_ca        | /var/lib/mysql/ca.pem          |
| ssl_capath    |                                |
| ssl_cert      | /var/lib/mysql/server-cert.pem |
| ssl_cipher    |                                |
| ssl_crl       |                                |
| ssl_crlpath   |                                |
| ssl_key       | /var/lib/mysql/server-key.pem  |
+---------------+--------------------------------+
我还可以看到(默认情况下)证书位于/var/lib/mysql/:

root@xxxxxx:/var/log/mysql# sudo find /var/lib/mysql -name '*.pem' -ls
   258224      4 -rw-------   1 mysql    mysql        1676 Aug 12 15:34 /var/lib/mysql/server-key.pem
   258226      4 -rw-------   1 mysql    mysql        1680 Aug 12 15:34 /var/lib/mysql/client-key.pem
   258225      4 -rw-------   1 mysql    mysql        1112 Aug 12 15:34 /var/lib/mysql/server-cert.pem
   258227      4 -rw-------   1 mysql    mysql        1112 Aug 12 15:34 /var/lib/mysql/client-cert.pem
   258223      4 -rw-------   1 mysql    mysql        2224 Aug 12 17:01 /var/lib/mysql/ca.pem
   258523      4 -rw-------   1 mysql    mysql         452 Aug 12 15:34 /var/lib/mysql/public_key.pem
   258495      4 -rw-------   1 mysql    mysql        1680 Aug 12 15:34 /var/lib/mysql/private_key.pem
   258222      4 -rw-------   1 mysql    mysql        1676 Aug 12 15:34 /var/lib/mysql/ca-key.pem
我的/etc/mysql/my.cnf文件就是这样的:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
require_secure_transport = ON
bind-address = thie_is_myserver_address_ip
        
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem
更改后,我运行:

sudo systemctl restart mysql
我已将以下证书复制到本地计算机:

 - /var/lib/mysql/ca.pem
 - /var/lib/mysql/client-cert.pem
 - /var/lib/mysql/client-key.pem
我尝试使用登录名和密码通过mysqlWorkbench登录,我已经将这3个证书添加到SSL选项卡中,但运气不好

现在我接收错误:

SSL connection error: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
错误日志(/var/log/mysql/Error.log):

当我尝试通过添加客户端配置(在/etc/mysql/my.cnf文件中)本地连接到远程服务器时:

我重置了mysql,并尝试以本地方式登录,收到:

root@xxxxxx:/var/log/mysql# mysql -u root -p
Enter password:
ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1) 
当我从我的.cnf文件中删除证书路径时,它与OPU证书一起工作。 但是我必须用证书来运行这个


我做错了什么?谢谢你的建议

实际上我忘记了这个命令

CREATE USER 'mysql_user'@'your_mysql_client_IP' IDENTIFIED BY 'password' REQUIRE X509;
我建议您使用以下两个简单教程来设置mysql db的SSL/TLS证书:

  • 目前在第1点。新安装已包含生成的证书,因此您不必生成新证书。如果确实要生成新证书或要刷新旧证书(默认证书的有效期为356),可以使用以下命令:

    sudo mysql_ssl_rsa_setup --uid=mysql
    
    也可以通过本教程手动生成:

  • 并将新证书放入此文件夹:

    /var/lib/mysql/
    

    你应该遵循这样的教程,看看它能给你带来什么
    sudo mysql_ssl_rsa_setup --uid=mysql
    
    /var/lib/mysql/