Соединение Python mysqlclient завершается неудачно с TLSv1.2 или TLSv1.3, настроенными на сервере MariaDB - PullRequest
0 голосов
/ 29 октября 2019

Я не уверен, что то, что я вижу, это ошибка или какая-то другая проблема конфигурации. В MariaDB 10.4.8, когда я настраиваю опцию tls_version

https://mariadb.com/kb/en/library/ssltls-system-variables/#tls_version

без TLSv1.1 (то есть TLSv1.2 или TLSv1.3), используется подключение Python mysqlclientс Джанго не получается. Если я снова настрою MariaDB на включение TLSv1.1, он снова начнет работать без каких-либо других изменений.

Является ли mysqlclient тем, что поддерживает новые версии TLS? Я не вижу ничего, указывающего версии TLS, которые поддерживаются mysqlclient.

ОС - это Ubuntu 18.04.3

OpenSSL 1.1.1d

mysqlclient 1.4.4

python 3.7.5

Django 2.2 (с использованием mysqlclient выше в виртуальной среде)

1 Ответ

1 голос
/ 30 октября 2019

Ваш mysqlclient (1.4.4.) Использует libmysql, созданный с поддержкой yassl вместо OpenSSL.

Yassl более не поддерживается (преемник - WolfSSL) и не поддерживает TLSv1.2 или новее. Пакет приветствия клиента отправляет серверу наивысшую поддерживаемую версию TLS, которая является TLSv1.1 (3.1), поскольку сервер был настроен на поддержку TLSv1.2 (3.2) и TLSv1.3 (3.3), будет возвращена только ошибка, посколькуне может быть соглашения о версии протокола.

По этой причине мы отключили только TLSv1.0 на сервере, но не TLSv1.1, поэтому клиенты, созданные с помощью yassl, все равно смогут подключаться к MariaDB 10.4.

. См. Также MDEV-12190 , MDEV14101

Чтобы исправить это, вам потребуется собрать libmysql с поддержкой OpenSSL или установить libmysql из MySQL 8.0, который заменил Yassl на WolfSSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...