Configuró MySQL para SSL, pero SSL todavía está DESACTIVADO ..!

Configuré SSL para MySQL usando la siguiente secuencia de commands.

#!/bin/bash # mkdir -p /root/abc/ssl_certs cd /root/abc/ssl_certs # echo "--> 1. Create CA cert, private key" openssl genrsa 2048 > ca-key.pem echo "--> 2. Create CA cert, certificate" openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem echo "--> 3. Create Server certificate, key" openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem echo "--> 4. Create Server certificate, cert" openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem echo "" echo echo "" echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!" echo "" openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem echo "6. Create client certificate, cert" openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem exit 0 

Se crearon los siguientes files:

 ca-key.pem ca-cert.pem server-req.pem server-key.pem server-cert.pem client-req.pem client-key.pem client-cert.pem 

Luego combiné server-cert.pem y client-cert.pem en ca.pem (leí en un post para hacerlo ..)

Creé un usuario de ssl en MySQL:

 GRANT ALL ON *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL; 

A continuación añadí lo siguiente en my.cnf

 [mysqld] ssl-ca = /root/abc/ssl_certs/ca.pem ssl-cert = /root/abc/ssl_certs/server-cert.pem ssl-key = /root/abc/ssl_certs/server-key.pem 

Después de reiniciar el server, me conecté a mysql pero SSL todavía no estaba en uso 🙁

 mysql -u ssluser -p SSL: Not in use 

Incluso el parámetro have_ssl seguía mostrando deshabilitado .. 🙁

 mysql> show variables like '%ssl%'; +---------------+---------------------------------------------+ | Variable_name | Value | +---------------+---------------------------------------------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | /root/abc/ssl_certs/ca.pem | | ssl_capath | | | ssl_cert | /root/abc/ssl_certs/server-cert.pem | | ssl_cipher | | | ssl_key | /root/abc/ssl_certs/server-key.pem | +---------------+---------------------------------------------+ 

¿He perdido algún paso, o qué pasa?

Las respuestas con pasos perdidos en detalle serán muy apreciadas ..

Intente comprobar esto:

  • Habilite el logging de salida de advertencia de MySQL y lea las inputs de logging reales.
  • Compruebe los permissions del sistema de files para permitir que el usuario como MySQL ejecuta ( mysql ?) Leer los files. En /root no creo que tenga por defecto.
  • ¿Apparmor o SELinux impide que MySQL lea los certificates y las keys?
  • Usted puede ser golpeado por un desagradable error de una incompatibilidad reciente entre OpenSSL y MySQL. No he podido generar keys en Ubuntu 12.04 que MySQL pueda leer, mientras que las que genero en Debian Squeeze funcionan bien.

Consulte la solución aquí: https://askubuntu.com/questions/194074/enabling-ssl-in-mysql

Necesita convertir certificates al formatting anterior:

 openssl rsa -in client-key.pem -out client-key.pem openssl rsa -in server-key.pem -out server-key.pem 

En Ubuntu, puede comprobar si apparmor bloquea el acceso a sus files cert, consulte el manual .

A continuación, debe comprobar los permissions / propiedad del file y agregar los derechos necesarios a /etc/apparmor.d/usr.sbin.mysqld . Vea este hilo .

Creo que este problema se debe al hecho de que no ha especificado las routes de acceso de file para su cert de CA, key de server y certificate de server correctamente. Debe estar en el siguiente formatting …

 ssl-ca=path/to/repo/mysql-directory/path/to/pem/cacert.pem ssl-cert=path/to/repo/mysql-directory/path/to/pem/server-cert.pem ssl-key=path/to/repo/mysql-directory/path/to/pem/server-key.pem 

es decir, necesitas el PATH FULL FILE de los certs y las keys dentro de tu carpeta de installation de mysql, no una ruta '/ root /' relativa.

Aquí hay un ejemplo de mi installation:

 mysql> show variables like '%ssl%'; +---------------+----------------------------------------------------------+ | Variable_name | Value | +---------------+----------------------------------------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/ca.pem | | ssl_capath | | | ssl_cert | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-cert.pem| | ssl_cipher | | | ssl_key | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-key.pem | +---------------+----------------------------------------------------------+ 

Consulte el siguiente enlace para get información adicional. https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html

Agregue el "ssl" en la sección [mysqld] en el file my.cnf como

 ssl ssl-ca = /root/abc/ssl_certs/ca.pem ssl-cert = /root/abc/ssl_certs/server-cert.pem ssl-key = /root/abc/ssl_certs/server-key.pem 

y luego reiniciar mysql y comprobar de nuevo. Funcionará.