拒绝使用SSL访问MySQL远程连接尝试

拒绝使用SSL访问MySQL远程连接尝试,mysql,ssl,openssl,Mysql,Ssl,Openssl,我已经为SSL设置了一个MySQL服务器v5.5.41,我正在尝试远程连接它。我已创建SSL证书、密钥、创建用户并授予如下权限: GRANT SELECT ON mydb.* TO 'myuser'@'xxx.xxx.xxx.xxx' require x509; 我在服务器上更新了my.cnf文件,如下所示: ssl-ca = /etc/mysql/certs/ca.pem ssl-cert = /etc/mysql/certs/server-cert.pem ssl-key = /et

我已经为SSL设置了一个MySQL服务器v5.5.41,我正在尝试远程连接它。我已创建SSL证书、密钥、创建用户并授予如下权限:

GRANT SELECT ON mydb.* TO 'myuser'@'xxx.xxx.xxx.xxx' require x509;
我在服务器上更新了
my.cnf
文件,如下所示:

ssl-ca   = /etc/mysql/certs/ca.pem
ssl-cert = /etc/mysql/certs/server-cert.pem
ssl-key  = /etc/mysql/certs/server-key.pem
我对客户端pem文件(和
ca.pem
)也做了同样的操作,将它们添加到my.cnf(在
client
部分下)。我还更新了(Linux)
/etc/apparmor.d/usr.sbin.mysqld
,因为我将pem文件放在我创建的新目录中(
certs

一切都很好!除非我重复为本地开发机器创建客户端pem文件和用户/权限的过程。我做的一切都完全一样,但当我尝试连接时,我得到:

错误1045(28000):用户“testuser”@“xxx.xxx.xxx.xxx”(使用密码:是)的访问被拒绝

我在mysql服务器上创建了
testuser
,并以与以前完全相同的方式授予特权(通过查询数据库进行验证)。客户机pems和ca.pem在盒子上,cnf文件已更新。我重新启动了MySQL。我用来连接服务器的密码肯定是正确的


我能想到的唯一不同之处是,当我创建客户端证书时,我不知道该为通用名称输入什么。在另一种情况下,在它工作的地方,这台机器是一个web服务器,所以我使用的通用名称是域。对于我的开发机器,我只是使用运行
hostname
命令得到的通用名称。如果这是问题,那么通用名称应该是什么?

问题的原因是我不小心放了以下几行:

ssl-cert = /etc/mysql/certs/client-cert.pem
ssl-key  = /etc/mysql/certs/client-key.pem
…在我的本地开发机器上的
[mysqld_safe]
部分而不是
my.cnf
中的
[client]
部分,因此这里没有固有的MySQL或SSL问题(尽管如果我没有编写这个问题,我可能要花很多时间才能发现)