我在一台服务器上设置了mysql-server。我通过在my.cnf的[mysqld]部分添加以下行来启用SSL:
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
我已按照http://dev.mysql.com/doc/refman/5.1/en/creating-ssl-certs.html
中的步骤生成了这些证书当我使用以下命令运行mysql客户端时,现在在同一台服务器上,建立连接并启用SSL:
mysql -uuser -p --ssl-ca=/etc/mysql/ca-cert.pem
现在我尝试从远程服务器执行相同的操作
mysql -uuser -hserver.asdf -p --ssl-ca=ca-cert.pem
,我收到以下错误:
ERROR 2026 (HY000): SSL connection error
我在哪里复制了我之前使用过的ca-cert.pem文件。但是,当我运行以下命令时,连接将在启用SSL的情况下建立:
mysql -uuser -hserver.asdf -p --ssl-cert=client-cert.pem --ssl-key=client-key.pem
根据我的理解,只有当我们希望服务器验证客户端并且实际上不需要时,mysql客户端命令中才需要--ssl-cert和--ssl-key参数。但是,当我使用这些参数时,为什么我可以连接呢?
更新
在提出这个问题时,我认为还有一些其他重要因素是不重要的。使用的mysql-server软件包版本是Percona-Server-51-5.1.73,本地服务器上的mysql-client软件包是Percona-client-51-5.1.73。但是在远程服务器上,mysql-client软件包是Percona-client-51-5.1.61
答案 0 :(得分:0)
事实证明,在Percona-mysql的最新版本中,针对SSL的Percona-mysql包进行了一些重大更改。 percona-mysql包的所有旧版本都带有yaSSL支持,而更新的版本使用OpenSSL。
这样做是因为使用yaSSL构建的软件包显然会导致某些程序崩溃。有关此错误的更多详细信息,请访问:https://bugs.launchpad.net/percona-server/+bug/1104977
由于此问题已从5.1.68开始修复,显然之前的程序包无法正常运行。
因此,在将mysql客户端软件包更新到最新版本后,问题得到解决。