MySQL 5.7 でデフォルトの SSL 証明書/キーを使用しますか?

MySQL 5.7 でデフォルトの SSL 証明書/キーを使用しますか?

私はPercona MySQL 5.7(5.7.21-20-log)をインストールしましたapt-get。ルートアカウントを使用して接続し、SSLステータスを確認すると、

# mysql --ssl
mysql> show variables like '%ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.21-20, for debian-linux-gnu (x86_64) using  6.3

Connection id:      31
Current database:
Current user:       root@localhost
SSL:            Cipher in use is ECDHE-RSA-AES128-GCM-SHA256

デフォルトではSSLが使用されています。ただし、完全なコマンドを使用すると

mysql -h 127.0.0.1 -P 3306 -u root  -p  --ssl-ca=/var/lib/mysql/ca.pem --ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem

エラーが返される

ERROR 2026 (HY000): SSL connection error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

答え1

問題は、クライアント側でサーバー証明書とキーを使用していることです。

--ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem

文書に記載されているように6.4.2 暗号化接続のコマンドオプション(強調は私によるものです):

--ssl-cert=file_name

PEM 形式の SSL 公開鍵証明書ファイルのパス名。クライアント側では、これはクライアント公開鍵証明書ですサーバー側では、これはサーバーの公開鍵証明書です。サーバー側では、このオプションは を意味します--ssl

--ssl-key=file_name

PEM形式のSSL秘密鍵ファイルのパス名。クライアント側では、これはクライアントの秘密鍵サーバー側では、これはサーバーの秘密鍵です。サーバー側では、このオプションは を意味します--ssl

のみを使用して TLS 接続を強制することができます--ssl:

mysql -h 127.0.0.1 -P 3306 -u root -p --ssl

ここで役立つのは かもしれません--ssl-cipher=cipher_list。これを使用すると、サーバー構成で許可されている場合でも、接続で不要な暗号が使用されていないことを確認できます。ただし、両方を制御する権限がある場合は、主にサーバー側でこれを構成する必要があります。

関連情報