Я не могу подключиться к MySQL 5.7.27, запущенному на сервере CentOS 7, после обновления моей рабочей станции до Ubuntu 20.04 LTS. Я подключаюсь с помощью команды mysql -h <server_ip> -u <user_name> -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 <server_ip> --ssl-mode=DISABLED -u <user_name> -p
Я что-то упускаю или это ошибка? Спасибо за ваши ответы.
В качестве временного решения вы можете отключить ssl из командной строки
$ mysql -h <myserver> -u <myuser> -p --ssl-mode=DISABLED
password:
или создав файл my.cnf
$ cat /etc/my.cnf
[client]
ssl-mode=DISABLED
Приносим извинения за то, что оставили комментарий в качестве ответа (недостаточно репутации), но:
У меня нет никаких доказательств этого кроме openssl s_client -tls1 -connect <some TLSv1-enabled host>:443
не работает, и тоже не может nginx
поддержка TLS 1.0 и 1.1 в качестве сервера (даже при правильной настройке): /.
Версии TLS до 1.2 обычно считаются достаточно опасными, чтобы их избегать, вероятно, поэтому это и было сделано.
Боюсь, это дает только половину ответа; Я надеюсь, что кто-нибудь подскажет, как снова включить TLS 1.0 и / или 1.1.
Я нашел решение, предполагающее, что ваш MySQL использует OpenSSL, а не yaSSL.
Обратитесь к ssl_cipher переменная конфигурации MySQL.
Настройте список шифров, который включает псевдоцифер. @SECLEVEL=1
.
Например,
ssl_cipher = "DHE-RSA-AES128-GCM-SHA256:AES128-SHA:@SECLEVEL=1"
Если вам нужен более разрешительный, но все же безопасный шифровальный список,
"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 может сработать.