我有一个使用CN = * .mydomain.com从rapidssl发出的通配符证书。我有一个Web服务器和一个mysql数据库服务器。证书适用于网站访问。现在我想为我的应用程序启用ssl到mysql。我已经在mysql服务器中启用了ssl而没有问题:
+---------------+---------------------------------+
| Variable_name | Value |
+---------------+---------------------------------+
| have_openssl | YES |
| have_ssl | YES |
但是,当我尝试使用client / ssl进行连接时,我得到: ERROR 2026(HY000):SSL连接错误:错误:00000001:lib(0):func(0):reason(1)
这似乎在此记录: http://dev.mysql.com/doc/refman/5.5/en/creating-ssl-certs.html
它说我不能使用相同的CN作为证书。我不明白如何使用通配符证书。这是否意味着我还必须为mysql连接购买主机特定的证书?
我不太使用SSL,所以我发现很难弄清楚应该如何设置它。任何指针,甚至是明显的指针,都可能在这个阶段提供帮助。
运行: mysql Ver 15.1使用readline 5.1分发5.5.32-MariaDB,用于debian-linux-gnu(x86_64) ubuntu 12.04
答案 0 :(得分:7)
确保对--ssl-ca
选项的ca-cert使用绝对路径。
相对路径或shell扩展(例如~
)将无效并将生成ERROR 2026 (HY000): SSL connection error: ASN: bad other signature confirmation
。
我在mysql
手册页或MySQL手册的SSL命令选项(http://download.nust.na/pub6/mysql/doc/refman/5.1/en/ssl-options.html)中可以看到的任何地方都没有记录。
答案 1 :(得分:6)
我有类似的问题,显然是从我读过的所有MySQL社区版的二进制(预编译)版本(可能同样适用于MariaDB),与yaSSL捆绑在一起而不是openSSL存在一些来自该库的限制和限制。根据mysql手册(https://dev.mysql.com/doc/refman/5.6/en/secure-connection-options.html)
“yaSSL不查找任何目录,也不遵循链式证书树.yaSSL要求CA证书树的所有组件都包含在单个CA证书树中,并且文件中的每个证书都有唯一的SubjectName值。要解决此yaSSL限制,请将包含证书树的各个证书文件连接到一个新文件中,并将该文件指定为--ssl-ca选项的值“。
如果您想检查您的MySQL安装是否使用yaSSL或openSSL,您可以按照此论坛中的步骤(http://mysqlblog.fivefarmers.com/2013/05/14/how-to-tell-whether-mysql-server-uses-yassl-or-openssl/)进行操作。它告诉看到状态变量' 如果您的MySQL安装附带yaSSL,则Rsa_public_key'显示状态如'%rsa%',结果必须为空,因为在使用yaSSL的发行版中不存在此类变量。
其他可能的原因是服务器上的主机名与服务器证书的主题(--ssl-cert参数的参数)不匹配,比较命令的输出
<强> shell> hostname
强>
使用服务器证书中的DNS主题,您可以使用下一个命令获取它(查看它所在的部分“X509v3使用者替代名称:”):
<强> shell> openssl x509 -in "your-server-certificate" -noout -text
强>
如果这些都无效,您可以看到下一页http://milcom.us/2012/11/02/encrypted-mysql-connections/
PS:英语不是我的母语,对任何语法错误都很抱歉
答案 2 :(得分:6)
我遇到以下错误:
[root@example ~]$ mysql
ERROR 2026 (HY000): SSL connection error
适用于我的FIX :服务器和客户端&#34;通用名称&#34;证书中的证书必须与CA的不同。更改CN后,错误停止;我验证了连接状态:
mysql> status;
...
SSL: Cipher in use is DHE-RSA-AES256-SHA
...
来源:
&#34;重要无论您使用何种方法生成证书和密钥 files,用于服务器和客户端的Common Name值 证书/密钥必须各自与用于的公共名称值不同 CA证书。否则,证书和密钥文件将不会 为使用OpenSSL编译的服务器工作。&#34;
http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-certs.html
PS:我没有使用通配符证书和/或第三方CA,我创建了自己的签名证书,这对我来说很合适:http://angelcool.net/sphpblog/comments.php?y=14&m=05&entry=entry140511-164525
答案 3 :(得分:2)
MySQL不支持通配符证书。 MySQL和SSL存在许多不足之处。
请参阅Getting MySQL server to run with SSL上的帖子(以及我在其中提到的帖子)。
答案 4 :(得分:2)
我从CentOS-7版本ojf 5.6.29-76.2-log Percona Server和Client连接 到CentOS-6(服务器版本:5.6.23-72.1-log源分发Percona),也会遇到这个问题。
添加选项将修复它:
也许anther ssl-cipher也会修复。- SSL的加密= AES128-SHA