我不确定我看到的是bug还是其他配置问题。使用MariaDB 10.4.8配置tls_version
选项时
如果没有TLSv1.1 (即TLSv1.2或TLSv1.3),与Django一起使用的连接将失败。如果我将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 )
发布于 2019-10-29 22:07:07
您的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,后者用WolfSSL代替了Yassl。
https://stackoverflow.com/questions/58613246
复制相似问题