创建自签名SSL证书后,我已经配置了远程MySQL服务器以使用它们(并且启用了SSL)
我使用SSH进入远程服务器,然后尝试使用SSL(MySQL服务器为5.5.25)连接到它自己的mysqld。
mysql -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)
好的,我记得阅读过通过SSL连接到同一服务器存在一些问题。所以我将客户端密钥下载到我的本地框中,然后从那里进行测试...
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error
目前尚不清楚此“ SSL连接错误”错误指的是什么,但是如果省略-ssl-ca
,则可以使用SSL进行连接。
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.5.25 MySQL Community Server (GPL)
但是,我相信这只是对连接进行加密,并没有实际验证证书的有效性(这意味着我可能会受到中间人攻击)
SSL证书有效(尽管是自签名的),并且没有密码短语。所以我的问题是,我在做什么错?如何使用自签名证书通过SSL连接?
MySQL服务器版本为5.5.25,服务器和客户端为CentOS 5。
感谢您的任何建议
编辑:请注意,在所有情况下,命令都是从ssl密钥所在的同一目录发出的(因此没有绝对路径)
编辑(作为对mgorven的回应):
ca.cert
是证书颁发机构证书,应该告诉mysql我的证书颁发机构是受信任的。
来自的配置my.cnf
是
[mysqld]
ssl-ca=/etc/ssl/mysql/ca.cert
ssl-cert=/etc/ssl/mysql/server.cert
ssl-key=/etc/ssl/mysql/server.key
我也尝试添加,ssl-cipher=DHE-RSA-AES256-SHA
但是后来删除了它,因为它没有帮助。
ca.cert
啊 是服务器的自签名证书吗?您是否使用客户端证书进行身份验证?请在服务器上提供与SSL相关的配置。