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

时间:2015-05-05 17:24:31

标签: 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  = /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。我用来连接服务器的密码肯定正确。

我能想到的唯一不同的是,当我创建客户端证书时,我不知道要为Common Name添加什么。在另一种情况下,在它工作的地方,该机器是一个Web服务器,因此我使用的Common Name是域。对于我的开发机器,我只使用了通过运行hostname命令获得的Common Name。如果这是问题,公共名称应该是什么?

1 个答案:

答案 0 :(得分:0)

问题的原因是因为我不小心把这些行:

ssl-cert = /etc/mysql/certs/client-cert.pem
ssl-key  = /etc/mysql/certs/client-key.pem

...在[mysqld_safe]部分下的本地开发计算机上,而不是[client]中的my.cnf部分,所以这里没有固有的MySQL或SSL问题(尽管我没有'写下这个问题,我可能花了很长时间才发现这个问题。