在MariaDB服务器上配置TLSv1.2或TLSv1.3时,Python mysqlclient连接失败
我不确定我看到的是bug还是其他配置问题。对于MariaDB 10.4.8,当我配置在MariaDB服务器上配置TLSv1.2或TLSv1.3时,Python mysqlclient连接失败,python,ssl,mariadb,Python,Ssl,Mariadb,我不确定我看到的是bug还是其他配置问题。对于MariaDB 10.4.8,当我配置tls\U版本选项时 如果没有TLSv1.1(即TLSv1.2或TLSv1.3),与Django一起使用的Python mysqlclient连接将失败。如果我将MariaDB配置回包含TLSv1.1,它将重新开始工作,而不进行任何其他更改 mysqlclient支持新的TLS版本有那么久吗?我没有看到任何东西表明mysqlclient支持的TLS版本 操作系统是Ubuntu 18.04.3 OpenSSL 1
tls\U版本
选项时
如果没有TLSv1.1(即TLSv1.2或TLSv1.3),与Django一起使用的Python mysqlclient连接将失败。如果我将MariaDB配置回包含TLSv1.1,它将重新开始工作,而不进行任何其他更改
mysqlclient支持新的TLS版本有那么久吗?我没有看到任何东西表明mysqlclient支持的TLS版本
操作系统是Ubuntu 18.04.3
OpenSSL 1.1.1d
mysqlclient 1.4.4
python 3.7.5
Django 2.2(在虚拟环境中使用上面的mysqlclient)您的mysqlclient(1.4.4.)使用libmysql,它是使用yassl支持而不是OpenSSL构建的
Yassl已停止使用(后续版本为WolfSSL),不支持TLSv1.2或更新版本。客户端hello数据包将支持的最高TLS版本发送到服务器,即TLSv1.1(3.1),因为服务器配置为支持TLSv1.2(3.2)和TLSv1.3(3.3)。由于无法就协议版本达成协议,因此只会返回错误
由于这个原因,我们只在服务器中禁用了TLSv1.0,而没有禁用TLSv1.1,所以使用yassl构建的客户端仍然能够连接到MariaDB 10.4
。另见
要解决此问题,您需要使用OpenSSL支持构建libmysql,或者从MySQL 8.0安装libmysql,后者将Yassl替换为WolfSSL。您的操作系统、版本和SSL库(包括版本)?使用软件版本更新…据我所知,一切都是“最新的”。谢谢您的回答。我仍然不熟悉各种依赖关系和构建限制,但您编写的内容很有意义。考虑到Django的使用,我感到惊讶的是,似乎没有人更早地发现这一点。是否仍有少数人尝试将MariaDB与SSL结合使用,并将其限制为TLSv1.2或TLSv1.3?如果人们在本地主机上使用unix套接字,我想这个细节是没有意义的。将TLS与MariaDB一起使用是非常常见的,尤其是当客户端和服务器不是同一台机器或在同一个受信任的网络中时。仅当您能够保证所有客户端都支持TLSv1.2时,才应限制到TLS1.2或1.3。TLSv1.3甚至更具限制性,例如,MariaDB客户端库(MariaDB Connector/C)不支持Windows上的TLSv1.3,因为底层Windows本机schannel库尚不支持TLSv1.3。另一个副作用是TLSv1.3有自己的密码套件,以前版本的密码套件不再受支持。是的,当我在挖掘时,我学到了更多关于TLSv1.3的知识。谢谢你的帮助!