No puedo conectarme a mysql usando el certificado SSL auto-firmado

Después de crear un certificado SSL autofirmado, he configurado mi mysqld remoto para usarlos (y ssl está habilitado)

Me ssh en mi servidor remoto, y tratar de conectar a su propio mysqld utilizando ssl (servidor mysql es 5.5.25) ..

~> mysql -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert Enter password: ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1) 

Ok, recuerdo haber leído theres algún problema con la conexión al mismo servidor a través de SSL. Así que descargar las claves del cliente a mi caja local, y la prueba de allí …

 ~> mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert Enter password: ERROR 2026 (HY000): SSL connection error 

No está claro a qué se refiere este error de "error de conexión SSL", pero si omito el -ssl-ca, entonces puedo conectarme usando SSL.

 ~> mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 37 Server version: 5.5.25 MySQL Community Server (GPL) 

Sin embargo, creo que esto es sólo el cifrado de la conexión, y no realmente la verificación de la validez de la cert (lo que significa que sería potencialmente vulnerable a un hombre en medio de ataque)

Los certs ssl son válidos (aunque sí firmados), y no tienen una frase de contraseña en ellos

Así que mi pregunta es, ¿qué estoy haciendo mal? ¿Cómo puedo conectarme a través de SSL, usando un certificado auto-firmado?

MySQL versión del servidor es 5.5.25 y el servidor y los clientes son Centos 5 Gracias por cualquier consejo

Editar: Tenga en cuenta que en todos los casos, el comando se emite desde el mismo directorio donde residen las claves ssl (por lo tanto, no hay ruta absoluta)

Editar (en respuesta a mgorven): ca.cert es el certificado de la entidad emisora ​​de certificados, que se supone que debe indicar a mysql que se confía en mi autoridad de certificación.

La configuración de my.cnf es

 [mysqld] ssl-ca=/etc/ssl/mysql/ca.cert ssl-cert=/etc/ssl/mysql/server.cert ssl-key=/etc/ssl/mysql/server.key 

También traté de añadir ssl-cipher = DHE-RSA-AES256-SHA, pero desde entonces se ha eliminado, ya que no ayuda

Sí, está correcto que si no especifica –ssl-ca entonces el cliente no comprueba el certificado del servidor en absoluto. Dado que funciona sin esa opción, la razón más probable para el error es que el cliente no confía en el certificado del servidor.

Si utiliza certificados de cliente y servidor autofirmados, el archivo ca.cert debería incluir ambos archivos. De esta forma, el cliente confía en el certificado del servidor y el servidor confía en el certificado del cliente.

Por ejemplo:

Generar la clave del servidor y el certificado:

 $ openssl req -x509 -newkey rsa:1024 \ -keyout server-key-enc.pem -out server-cert.pem \ -subj '/DC=com/DC=example/CN=server' -passout pass:qwerty $ openssl rsa -in server-key-enc.pem -out server-key.pem \ -passin pass:qwerty -passout pass: 

Genere la clave del cliente y el certificado:

 $ openssl req -x509 -newkey rsa:1024 \ -keyout client-key-enc.pem -out client-cert.pem \ -subj '/DC=com/DC=example/CN=client' -passout pass:qwerty $ openssl rsa -in client-key-enc.pem -out client-key.pem \ -passin pass:qwerty -passout pass: 

Combine los certificados de cliente y servidor en el archivo de certificados de CA:

 $ cat server-cert.pem client-cert.pem > ca.pem 

Para usar una forma ssl, debe probar con:

 mysql -u <user> -p --ssl=1 --ssl-ca=ca.cert --ssl-verify-server-cert 

Las --ssl-cert y --ssl-key en el cliente mysql se utilizan para SSL de 2 vías. Esto significa autenticación basada en certificados. El objeto del certificado de cliente debe ser el nombre de usuario.

Por casualidad, ¿no ha ingresado el mismo nombre común para certs de servidor y cliente? En caso afirmativo, reemplace uno de ellos para que los nombres comunes sean diferentes.