I не могу подключиться к MySQL 5.7.27, запущенному на сервере CentOS 7, после обновления моей рабочей станции до Ubuntu 20.04 LTS. Я подключаюсь с помощью команды mysql -h
и после ввода пароля получаю ошибку 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
Я что-то упускаю или это ошибка? Спасибо за ответы.
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.
Приносим извинения за то, что оставили комментарий в качестве ответа (недостаточно репутации), но:
У меня нет никаких доказательств этого, кроме openssl s_client -tls1 -connect <какой-то хост с поддержкой TLSv1> : 443
не работает, и nginx
не может поддерживать TLS 1.0 и 1.1 в качестве сервера (даже при правильной настройке): /.
Версии TLS до 1.2 обычно считаются достаточно небезопасными, чтобы следует избегать, вероятно, поэтому это и было сделано.
Боюсь, это дает только половину ответа; Я надеюсь, что кто-нибудь предложит решение для повторного включения TLS 1.0 и / или 1.1.
В качестве временного решения вы можете отключить ssl из командной строки
$ mysql -h <myserver> -u <myuser> -p --ssl-mode=DISABLED
password:
или создав файл my.cnf
$ cat /etc/my.cnf
[client]
ssl-mode=DISABLED
У меня сработало, как описано здесь шифры mysql 5.7 для включения TLS 1.2:
[mysqld]
tls_version=TLSv1.2
После перезапуска я снова смог выполнить импорт.
Откройте /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 и попробовать.