我正在使用MySQL并生成用于启用SSL的证书。
以下是SSL配置:
mysql> show variables like '%ssl%';
+---------------+----------------------------+
| Variable_name | Value |
+---------------+----------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/mysql/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql/server-cert.pem |
| ssl_cipher | |
| ssl_key | /etc/mysql/server-key.pem |
+---------------+----------------------------+
7 rows in set (0.00 sec)
它看起来工作正常,看起来我在将这些证书应用于MySQL服务器时做得很好。
通过远程主机创建与MySQL服务器的连接存在问题。
mysql -u app1 -p -h 192.168.33.131 --ssl --ssl-capath=<path>/ssl/ --ssl-ca=<path>/ca-cert.pem --ssl-cert=<path>/client-cert.pem --ssl-key=<path>/client-key.pem
Enter password:
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
似乎在证书方面存在一些问题,或者可能是其他问题。
环境:
OS: Ubuntu 14.04
MySQL: 5.5.41
OpenSSL: OpenSSL 1.0.1f 6 Jan 2014
答案 0 :(得分:3)
https://bugs.mysql.com/bug.php?id=64870
在底部:
如果您使用'openssl req -newkey rsa:2048 ...'来生成密钥, 请注意,openssl 1.0和更新版现在存储私钥 在PKCS#8格式而不是PKCS#1中。
使PKCS#8成为私钥的默认写入格式,替换为 传统格式。这种形式是标准化的,更安全,而不是 包含隐式MD5依赖项。 [史蒂夫汉森]
这些键将具有PEM标题,例如:
-----BEGIN PRIVATE KEY-----
如果使用YaSSL编译MySQL作为其SSL实现(我 相信是默认的),这些密钥不会加载,MySQL会抱怨 在启动时:[警告]无法设置SSL [警告] SSL错误: 无法获取私钥
YaSSL期望使用PEM的PKCS#1格式的RSA私钥 头:
-----BEGIN RSA PRIVATE KEY-----
在线各种“建议”似乎表明您可以更改PEM 这些PKCS#8私钥的页眉和页脚让他们工作 使用MySQL / yaSSL。这确实会阻止MySQL抱怨 启动,但遗憾的是,与MySQL的SSL连接仍然存在 失败的原因如下:
**ERROR 2026 (HY000): SSL connection error: protocol version mismatch**
要解决此问题,请将密钥转换为较旧的PKCS#1 RSAPrivateKey格式 使用'openssl rsa'。
$ openssl rsa -in key-from-openssl-1.pem -out pkcs1-yassl-compatible-key.pem