我试图创build一些证书使用MySQL和一切正常,如果我使用sha1algorithm。 如果我添加-sha256开关或-sha384我不能连接到MySQL! 我得到这个错误: 错误2026(HY000):SSL连接错误:ASN:坏的其他签名确认
我在这里发现了一个类似的问题,但接受的解决scheme是使用-sha1。 我想使用sha2,因为微软,谷歌和Firefox不推荐使用sha1了。
这是我用来创build密钥的。 如果我删除了-sha256开关它使用sha1工作正常。 我也尝试了与2048位密钥,同样的问题
openssl genrsa 4096 > ca-key.pem openssl req -sha256 -new -x509 -nodes -days 10000 -key ca-key.pem -out ca-cert.pem openssl req -sha256 -newkey rsa:4096 -days 10000 -nodes -keyout server-key.pem -out server-req.pem openssl rsa -in server-key.pem -out server-key.pem openssl x509 -req -sha256 -in server-req.pem -days 10000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem openssl req -sha256 -newkey rsa:4096 -days 10000 -nodes -keyout client-key.pem -out client-req.pem openssl rsa -in client-key.pem -out client-key.pem openssl x509 -req -sha256 -in client-req.pem -days 10000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
证书validation没有问题
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
结果:
server-cert.pem: OK client-cert.pem: OK
my.cnf中
[mysqld] ssl = On ssl-cipher = DHE-RSA-AES256-SHA ssl-ca = /etc/mysql/ssl/ca-cert.pem ssl-cert = /etc/mysql/ssl/server-cert.pem ssl-key = /etc/mysql/ssl/server-key.pem
使用MySQL 5.5.40
mysql>SELECT version() 5.5.40-0+wheezy1
SSLvariables看起来不错
mysql> show variables like '%ssl%'; Variable_name Value ssl_key /etc/mysql/ssl/server-key.pem ssl_cipher DHE-RSA-AES256-SHA ssl_cert /etc/mysql/ssl/server-cert.pem ssl_capath ssl_ca /etc/mysql/ssl/ca-cert.pem have_ssl YES have_openssl YES
Openssl版本
~ $ openssl version OpenSSL 1.0.1e 11 Feb 2013
我已经解决了这个问题。
我得到错误: 错误2026(HY000):SSL连接错误:ASN:当我连接HeidiSQL版本8.3.0.4694时, 其他签名确认不正确。 我没有提到,因为我认为这不相关。
我尝试使用PHP 5.6.2中的mysqli和ssl_set函数进行连接,并且工作正常。
所以问题不是MySQL。 然后,我安装了HeidiSQL 9.0.0.4865,并使用sha256连接完美的证书