web-dev-qa-db-ja.com

Ubuntu 20.04へのアップグレード後にMySQL(エラー2026)に接続できない

ワークステーションをUbuntu 20.04 LTSにアップグレードした後、CentOS 7サーバーで実行されているMySQL 5.7.27に接続できません。コマンド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

私が見つけた唯一の回避策は、mysql -h <server_ip> --ssl-mode=DISABLED -u <user_name> -pを使用してSSLを無効にすることです。

何か不足していますか、それともバグですか?回答ありがとうございます。

9
yavor

MySQLがyaSSLではなくOpenSSLを使用していることを前提としたソリューションを見つけました。

MySQLの ssl_cipher 構成変数を参照してください。

疑似暗号@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.e から取得すると、仕事ができる場合があります。

1
reivilibre

コメントとすべきものを回答として残してお詫びします(十分な担当者ではありません)。

  • ubuntu 20.04以降、TLS 1.0および1.1はシステム全体で無効になっているようです。
  • 再度有効にする方法がわかりません(そのため、この質問を見つけました)

openssl s_client -tls1 -connect <some TLSv1-enabled Host>:443が機能しないことを除いて、これの証拠はなく、サーバーとしてTLS 1.0および1.1をnginxでサポートすることもできません(正しく構成されていても):/。

1.2より前のバージョンのTLSは、一般に回避するのに十分安全ではないと考えられているため、おそらくこれが行われています。

これは答えの半分しか提供しないと思います。私は誰かがTLS 1.0や1.1を再度有効にするソリューションを導入してくれることを願っています。

2
reivilibre

一時的な解決策として、コマンドラインからsslを無効にすることができます

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

またはmy.cnfファイルを作成する

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