Introducción
MySQL es un sistema de gestión de bases de datos relacionales de código abierto. En otras palabras, es un programa que te permite almacenar, organizar y administrar grandes cantidades de datos en tablas separadas que están vinculadas entre sí a través de claves relacionales. MySQL se usa a menudo para admitir sitios web dinámicos, como los que se basan en CMS como WordPress.
El sistema MySQL consta de dos partes principales: un servidor, que es el programa que administra los datos y brinda acceso a los datos, y un cliente de línea de comandos, que permite a los usuarios interactuar con el servidor y ejecutar consultas sobre los datos. MySQL es completamente gratuito bajo la licencia de código abierto en su versión más extendida, pero también está disponible en versiones pagas para aquellos que necesitan funciones más avanzadas o soporte dedicado.
En resumen, MySQL es un software de base de datos relacional muy popular que le permite administrar y organizar grandes cantidades de datos.
Problema
El error de conexión SSL: error: 0A000086: rutinas SSL:: error de verificación de certificado fallido generalmente ocurre cuando se establece una conexión SSL a un servidor MySQL. Estaba configurando la replicación entre dos servidores MySQL que ejecutaban MySQL versión 8.0. Después de configurar la replicación, el comando "MOSTRAR ESTADO DEL ESCLAVO" en la instancia del esclavo me muestra el siguiente error:
Last_IO_Error: error al conectarse al maestro '[email protected]:3306' – tiempo de reintento: 60 reintentos: 3 mensaje: error de conexión SSL: error: 0A000086: rutinas SSL:: verificación de certificado fallida
Luego traté de conectar el servidor maestro desde el esclavo usando la línea de comando, con el certificado del cliente. De nuevo me salió el siguiente error con la conexión:
mysql -h 192.168.1.100 -u repl_user -p --ssl-ca=/etc/mysql/certs/ca.pem --ssl-cert=/etc/mysql/certs/client-cert.pem --ssl-key=/etc/mysql/certs/client-key.pem
Enter password:
ERROR 2026 (HY000): SSL connection error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
Posibles Causas
Este error puede ocurrir debido a varias razones. Aquí hay algunas causas posibles:
- El cliente no confía en el certificado SSL del servidor MySQL porque está autofirmado o no está firmado por una autoridad de certificación (CA) en la que confía el cliente.
- El certificado SSL del servidor MySQL ha caducado.
- El certificado SSL del servidor MySQL no está configurado correctamente.
- El cliente está usando una versión antigua de la biblioteca de cliente MySQL que no admite el certificado SSL del servidor.
Solución
Compruebe si ambos relojes del sistema están sincronizados.
Luego verifique el certificado del cliente y del servidor con el archivo CA y asegúrese de que todo esté bien. Utilice el siguiente comando para verificar los certificados:
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
server-cert.pem: OK
client-cert.pem: OK
Asegúrese de configurar un "Nombre común (FQDN)" diferente para el certificado de CA y el certificado maestro/cliente.
Verifique el estado de las variables SSL/TLS escribiendo. Asegúrese de que el servidor utilice el certificado correcto.
SHOW VARIABLES LIKE '%ssl%';
+-------------------------------------+----------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/mysql/certs/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql/certs/server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_fips_mode | OFF |
| ssl_key | /etc/mysql/certs/server-key.pem |
| ssl_session_cache_mode | ON |
| ssl_session_cache_timeout | 300 |
+-------------------------------------+----------------------------------+
27 rows in set (0.01 sec)
Finalmente, asegúrese de estar utilizando el nombre de usuario, el nombre de host y la contraseña correctos de la base de datos para conectarse.
Conclusión
En conclusión, el error de conexión SSL: error:0A000086:rutina SSL::error de verificación de certificado puede ocurrir al establecer una conexión SSL a un servidor MySQL por varias razones, incluido un certificado SSL no confiable o caducado, un certificado SSL mal configurado o un Biblioteca de cliente MySQL desactualizada. Para resolver este error, puede importar el certificado SSL del servidor al almacén de confianza del cliente, renovar el certificado SSL, comprobar la configuración SSL del servidor o actualizar la biblioteca del cliente MySQL a una versión más reciente que admita el certificado SSL del servidor.