Использовать ли SSL-сертификат/ключ по умолчанию в MySQL 5.7?

Использовать ли SSL-сертификат/ключ по умолчанию в MySQL 5.7?

У меня установлен Percona MySQL 5.7 (5.7.21-20-log) apt-get, когда я подключаюсь к нему с помощью учетной записи root и проверяю статус 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

Путь к файлу сертификата открытого ключа SSL в формате PEM.На стороне клиента это сертификат открытого ключа клиента.. На стороне сервера это сертификат открытого ключа сервера. На стороне сервера эта опция подразумевает --ssl.

--ssl-key=file_name

Имя пути к файлу закрытого ключа SSL в формате PEM. На стороне клиента этозакрытый ключ клиента. На стороне сервера это закрытый ключ сервера. На стороне сервера эта опция подразумевает --ssl.

Вы можете принудительно установить TLS-соединение --ssl, используя только:

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

Полезным здесь также может быть --ssl-cipher=cipher_list. С его помощью вы можете проверить, что соединение не использует какой-либо нежелательный вам шифр, даже если он разрешен в конфигурации сервера. Однако, когда у вас есть власть над обоими, это должно быть настроено в первую очередь на стороне сервера.

Связанный контент