Linux
MySQL 和 SSL 與 -sha256
我正在嘗試創建一些與 MySQL 一起使用的證書,如果我使用 sha1 算法,一切正常。如果我添加 -sha256 開關或 -sha384 我無法連接到 MySQL!。我收到此錯誤:錯誤 2026(HY000):SSL 連接錯誤:ASN:其他簽名確認錯誤
我在這裡發現了一個類似的問題,但公認的解決方案是使用 -sha1。我想使用 sha2,因為 Microsoft、Google 和 Firefox 不再推薦使用 sha1。
這是我用來創建密鑰的。如果我刪除 -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
證書驗證沒有問題
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
結果:
server-cert.pem: OK client-cert.pem: OK
我的.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
SSL 變數看起來不錯
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
我已經解決了這個問題。
我收到錯誤消息:ERROR 2026 (HY000): SSL connection error: ASN: bad other signature confirm當我連接 HeidiSQL 版本 8.3.0.4694 時。我沒有提到這一點,因為我認為這無關緊要。
我嘗試使用 PHP 5.6.2 中的 mysqli 和 ssl_set 函式進行連接,並且成功了。
所以問題不在於 MySQL。然後我安裝了 HeidiSQL 9.0.0.4865,它與使用 sha256 的證書完美連接