ワークステーションを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を無効にすることです。
何か不足していますか、それともバグですか?回答ありがとうございます。
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 から取得すると、仕事ができる場合があります。
コメントとすべきものを回答として残してお詫びします(十分な担当者ではありません)。
openssl s_client -tls1 -connect <some TLSv1-enabled Host>:443
が機能しないことを除いて、これの証拠はなく、サーバーとしてTLS 1.0および1.1をnginx
でサポートすることもできません(正しく構成されていても):/。
1.2より前のバージョンのTLSは、一般に回避するのに十分安全ではないと考えられているため、おそらくこれが行われています。
これは答えの半分しか提供しないと思います。私は誰かが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