¿Uso del certificado/clave SSL predeterminado en MySQL 5.7?

¿Uso del certificado/clave SSL predeterminado en MySQL 5.7?

Tengo Percona MySQL 5.7 (5.7.21-20-log) instalado usando apt-get, cuando lo conecto usando la cuenta raíz y verifico el estado de 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

Entonces, de forma predeterminada, se utiliza SSL. Sin embargo, cuando uso el comando completo

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

Devuelve error

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

Respuesta1

Su problema es utilizar el certificado y la clave del servidor en el lado del cliente.

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

Como se documenta en6.4.2 Opciones de comando para conexiones cifradas(el énfasis es mío):

--ssl-cert=file_name

El nombre de la ruta del archivo del certificado de clave pública SSL en formato PEM.Del lado del cliente, este es el certificado de clave pública del cliente.. Del lado del servidor, este es el certificado de clave pública del servidor. Del lado del servidor, esta opción implica --ssl.

--ssl-key=file_name

El nombre de la ruta del archivo de clave privada SSL en formato PEM. Del lado del cliente, este es elclave privada del cliente. Del lado del servidor, esta es la clave privada del servidor. Del lado del servidor, esta opción implica --ssl.

Puedes forzar la conexión TLS usando --ssl, solo:

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

Útil aquí también podría ser el archivo --ssl-cipher=cipher_list. Con él puedes verificar que la conexión no utiliza ningún cifrado que no desees incluso cuando esté permitido en la configuración del servidor. Sin embargo, cuando tenga poder sobre ambos, esto debe configurarse principalmente en el lado del servidor.

información relacionada