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.
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.
Toutes mes excuses pour avoir quitté ce qui devrait être un commentaire comme une réponse (pas assez de représentant), mais:
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.
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
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.