错误 2026(HY000):SSL 连接错误:错误:141A318A:SSL 例程:tls_proces s_ske_dhe:dh 密钥太小

问题描述 投票:0回答:2

使用此命令时出现此错误:

ssldir=/home/inet/devel/config/mysql_ssl

mysql \
        -vvvvv \
        -u ***** \
        -p \
        -h eos3 \
        --ssl-ca $ssldir/cacert.pem \
        --ssl-cert $ssldir/server-cert.pem \
        --ssl-key $ssldir/server-key.pem

eos3服务器在RHEL6,openssl-1.0.1e-fips MySQL 5.1.73

我有 3 台其他服务器正在尝试建立连接 A) RHEL7 mariadb-5.5.68, openssl-1.0.2k-fips B) RHEL8 MySQL 8.0.26, openssl-1.1.1k FIPS C) RHEL9 mariadb-10.5.16, openssl-3.0.1

A 和 C 连接没有问题,B 有,如果我在 RHEL9 上尝试 MySQL 8.0.30,它也会失败

我真的想解决 PHP 8.0 无法与 eos3 建立 SSL 连接的问题。

我读过一些帖子说尝试放宽 /etc/ssl/openssl.cnf 中的设置,但我的服务器都没有那个文件,而是在 /etc/pki/tls 中。在那里进行此更改没有帮助。

MinProtocol = TLSv1 CipherString = DEFAULT@SECLEVEL=1

EOS3建立MySQL SSL连接时返回的密码列表为: | SSL_密码列表 | ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:EC DHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA -AES256-SHA:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-S HA256:DHE-DSS-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELL IA256-SHA:DHE-DSS-CAMELLIA256-SHA:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-G CM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA:EC DH-ECDSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:CAMELLIA256-SHA:P SK-AES256-CBC-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDH E-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-A ES128-SHA:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA 256:DHE-DSS-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:DHE-RSA-SEED-SHA :DHE-DSS-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA:ECDH-RSA-AES12 8-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES1 28-|

据我所知,我的证书和 RSA 密钥是 2048 位的。如文档所述,当我有 1024 位时不起作用。

当我获得 SSL 连接时,Ssl_version 始终是 TLSv1.2,这是我所期望的。 RHEL7 连接和 RHEL9 连接的 Ssl Cipher 不同 DHE-RSA-AES256-GCM-SHA384 分别为 AES256-GCM-SHA384。

为什么 mariadb 可以工作,而 MySQL 不行?我希望如果我能让 MySQL 工作,那么 PHP 将有更好的工作机会。在 PHP 中使用 PEAR.php、DB.php 和 mysqli_d.php。

mysql openssl rhel
2个回答
1
投票

错误表明,您的服务器配置的 DH (Diffie-Hellman) 密钥太小,最近的 TLS 库认为它不安全。

MySQL 5.1 使用 512 位 DH 密钥,MySQL 5.7 使用 2048 位密钥:(参见这个commit

如果您无法升级系统,您可以尝试以下方法:

  1. 修补 viosslfactories.c 并重新编译 MySQL 5.1
  2. 尝试指定一个不需要 DH 的密码套件:例如AES256-SHA256

0
投票

将 RHEL9 上的“TLS.MinProtocol = TLSv1”添加到 /etc/pki/tls/openssl.cnf,如下所示

修复 MySQL 8.26/8.30 的问题

[加密政策]

.include = /etc/crypto-policies/back-ends/opensslcnf.config

允许 mysql 命令行(等)与旧服务器对话

TLS.MinProtocol = TLSv1

这对 PHP 没有帮助,仅指定一个不包含 DH/DHE 密码的密码列表到 mysqli_set_ssl 解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.