Невозможно подключиться к MySQL ( ошибка 2026) после обновления до Ubuntu 20.04

I не могу подключиться к MySQL 5.7.27, запущенному на сервере CentOS 7, после обновления моей рабочей станции до Ubuntu 20.04 LTS. Я подключаюсь с помощью команды mysql -h -u -p и после ввода пароля получаю ошибку 2026:

ERROR 2026 (HY000): SSL connection error: error:1425F102:SSL
routines:ssl_choose_client_version:unsupported protocol

Я также пытался получить данные из базы данных с помощью mysqldump, и она заканчивается с аналогичной ошибкой. Я подумал, что, возможно, после обновления рабочей станции клиент mysql не поддерживает старые протоколы, поэтому я вошел на сервер с помощью ssh, получил доступ к mysql из оболочки сервера и посмотрел, какие протоколы поддерживаются.

mysql> SHOW GLOBAL VARIABLES LIKE 'tls_version';
+---------------+---------------+
| Variable_name | Value         |
+---------------+---------------+
| tls_version   | TLSv1,TLSv1.1 |
+---------------+---------------+
1 row in set (0,00 sec)

С этой информацией я попытался подключиться с рабочей станции опять же, на этот раз с указанной версией TLS

mysql -h <server_ip> --tls-version=TLSv1.1 -u <user_name> -p
mysql -h <server_ip> --tls-version=TLSv1 -u <user_name> -p

И обе команды закончились с

ERROR 2026 (HY000): SSL connection error: error:141E70BF:SSL routines:tls_construct_client_hello:no protocols available

Единственное решение, которое я нашел, это отключить SSL с помощью mysql -h --ssl-mode = DISABLED -u -p

Я что-то упускаю или это ошибка? Спасибо за ответы.

15
задан 12 May 2020 в 17:09
5 ответов

Aurkitu dut irtenbide bat zure MySQL OpenSSL erabiltzen ari dela suposatuz eta ez yaSSL.

Ikus ssl_cipher MySQL-ren konfigurazio aldagaia.

Konfiguratu zerrenda adibide sasizifratua (ezkutukoa) biltzen duen zifratuak,

ssl_cipher = "DHE-RSA-AES128-GCM-SHA256:AES128-SHA:@SECLEVEL=1"

Zifratze zerrenda permisiboagoa baina seguruagoa behar baduzu,

"EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:@SECLEVEL=1"

cipherlist.eu-k hartutakoak egin dezake lana.

3
ответ дан 4 January 2021 в 07:14

Приносим извинения за то, что оставили комментарий в качестве ответа (недостаточно репутации), но:

  • начиная с Ubuntu 20.04, похоже, что TLS 1.0 и 1.1 были отключены во всей системе.
  • Я не знаю, как его снова включить (вот как я наткнулся на этот вопрос)

У меня нет никаких доказательств этого, кроме openssl s_client -tls1 -connect <какой-то хост с поддержкой TLSv1> : 443 не работает, и nginx не может поддерживать TLS 1.0 и 1.1 в качестве сервера (даже при правильной настройке): /.

Версии TLS до 1.2 обычно считаются достаточно небезопасными, чтобы следует избегать, вероятно, поэтому это и было сделано.

Боюсь, это дает только половину ответа; Я надеюсь, что кто-нибудь предложит решение для повторного включения TLS 1.0 и / или 1.1.

3
ответ дан 4 January 2021 в 07:14

В качестве временного решения вы можете отключить ssl из командной строки

$ mysql -h <myserver> -u <myuser> -p --ssl-mode=DISABLED
password:

или создав файл my.cnf

$ cat /etc/my.cnf  
[client] 
ssl-mode=DISABLED
11
ответ дан 4 January 2021 в 07:14

У меня сработало, как описано здесь шифры mysql 5.7 для включения TLS 1.2:

[mysqld]
tls_version=TLSv1.2

После перезапуска я снова смог выполнить импорт.

2
ответ дан 4 January 2021 в 07:14

Откройте /usr/lib/ssl/openssl.cnf с помощью вашего любимого редактора:

vi /usr/lib/ssl/openssl.cnf

Вверху файла добавьте следующую строку:

openssl_conf = old_support_conf

Внизу файла добавьте следующие строки:

[old_support_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.1
CipherString = DEFAULT@SECLEVEL=1

Если TLSv1.1 не работает для вас, вы можете изменить его на TLSv1 и попробовать.

0
ответ дан 4 January 2021 в 07:14

Теги

Похожие вопросы