web-dev-qa-db-fra.com

Impossible de connecter MySQL (Erreur 2026) après la mise à niveau de Ubuntu 20.04

Je ne peux pas me connecter à MySQL 5.7.27 en cours d'exécution sur Centos 7 Server après la mise à niveau de mon poste de travail sur Ubuntu 20.04 LTS. Je me connecte à l'aide de la commande mysql -h <server_ip> -u <user_name> -p Et après avoir entré le mot de passe, je reçois une erreur 2026:

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

J'ai également essayé d'obtenir des données de base de données à l'aide de MySqldump et cela finit par une erreur similaire. Je pensais que peut-être que après la mise à niveau du poste de travail MySQL Le client ne prend pas en charge les protocoles plus anciens, je me suis connecté à Server à l'aide de SSH, accédée à MySQL à partir de Server's Shell et que des protocoles sont pris en charge.

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

Avec ces informations, j'ai essayé de vous connecter à nouveau à la poste de travail, cette fois avec la version TLS spécifiée

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

Et les deux commandes ont fini par

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

Seulement la solution de contournement que j'ai trouvée, donc pour désactiver SSL en utilisant mysql -h <server_ip> --ssl-mode=DISABLED -u <user_name> -p

Est-ce que je manque quelque chose ou est-ce qu'un bug? Merci pour vos réponses.

16
yavor

J'ai trouvé une solution supposant que votre mysql utilise OpenSSL et non de Yassl.

Reportez-vous à la variable de configuration SSL_CIpher de MySQL.

Configurez une liste de chiffres qui inclut le pseudocipher @SECLEVEL=1.

Par exemple,

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

Si vous avez besoin d'une cipriste plus permissive mais toujours sécurisée,

"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"

pris de - ciiphérlist.e pourrait faire le travail.

1
reivilibre

Toutes mes excuses pour avoir quitté ce qui devrait être un commentaire comme une réponse (pas assez de représentant), mais:

  • depuis Ubuntu 20.04, il semble que TLS 1.0 et 1.1 a été désactivé à l'échelle du système.
  • Je ne sais pas comment le réactiver (c'est comme ça que j'ai trébuché sur cette question)

Je n'ai aucune preuve de cet autre que openssl s_client -tls1 -connect <some TLSv1-enabled Host>:443 ne fonctionne pas et ne peut ni nginx prend en charge TLS 1.0 et 1.1 en tant que serveur (même être configuré correctement): /.

Les versions TLS avant 1,2 sont généralement considérées suffisamment peu sûres à éviter, ce qui est probablement pourquoi cela a été fait.

Je crains que cela ne fournit que la moitié de la réponse; J'espère que quelqu'un va trimer avec une solution pour réactiver les TLS 1.0 et/ou 1.1.

2
reivilibre

En tant que solution temporaire, vous pouvez désactiver SSL de la ligne de commande.

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

ou en créant un fichier my.cnf

$ cat /etc/my.cnf  
[client] 
ssl-mode=DISABLED
2
Mohammed Lubbad

Ouvert /usr/lib/ssl/openssl.cnf Utiliser votre éditeur préféré:

vi /usr/lib/ssl/openssl.cnf

En haut du fichier, ajoutez la ligne suivante:

openssl_conf = old_support_conf

Au bas du fichier, ajoutez les lignes suivantes:

[old_support_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

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

Si TLSV1.1 ne fonctionne pas pour vous, vous voudrez peut-être le modifier en TLSV1 et essayer.

0
Abhinav Manchanda