【发布时间】:2015-05-05 17:24:31
【问题描述】:
我已经为 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' 的访问被拒绝(使用密码:YES)
我在 mysql 服务器上创建了testuser,并以与以前完全相同的方式授予权限(通过查询数据库进行验证)。客户端pems和ca.pem在盒子上,cnf文件已经更新。我已经重新启动了 MySQL。我用来连接服务器的密码肯定正确。
我能想到的唯一不同的是,当我创建客户端证书时,我不知道应该为通用名称输入什么。在另一种情况下,它正在工作,那台机器是一个 Web 服务器,所以我使用的通用名称是域。对于我的开发机器,我只是使用了运行hostname 命令获得的通用名称。如果这是问题所在,公用名应该是什么?
【问题讨论】: