由于我的 Debian 服务器上最新的 openssl 升级,我的 mysql 客户端无法连接并给出以下消息
SSL connection error: error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small
我想这是为了防止Logjam攻击。
感谢https://weakdh.org/sysadmin.html我知道如何生成更强的 Diffie-Hellman 参数。但是,我没有找到任何 MySQL 配置选项来实际使用它们。
有人知道吗?
MySQL 5.7.6 发行说明包含以下内容:
安全修复:由于 LogJam 问题 ( https://weakdh.org/ ),OpenSSL 已更改 openssl-1.0.1n 及更高版本的 Diffie-Hellman 密钥长度参数。OpenSSL 在http://openssl.org/news/secadv_20150611.txt提供了详细的解释。为了在 MySQL 中采用这种更改,vio/viosslfactories.c 中用于创建 Diffie-Hellman 密钥的密钥长度已从 512 位增加到 2,048 位。(错误 #77275、错误 #21221862、错误 #18367167、错误 #21307471)
由此看来,DH 大小在 MySQL 5.7.6 之前被硬编码为 512 位(永久阻塞?)。随着更高版本的 OpenSSL 拒绝这些弱密钥,在不升级 MySQL 的情况下升级 OpenSSL 似乎会破坏事情。
我们能够通过强制使用非 Diffie-Hellman SSL 密码来解决我们的连接问题。
使用我们的 mysql 5.5.42 Linux 客户端,我们成功地指定了
--ssl-cipher=AES256-SHA
命令行选项,如本错误报告中所述。但是,我们的 (Java7) MySQL 5.1.35 jdbc 客户端不喜欢该密码,但在我们
enabledSSLCipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA
在连接字符串中指定时工作,正如此处所推荐的那样。YMMV