Configura tu servidor mysql con ssl para securizar las transacciones en entornos Ubuntu - Debian
Este es un post relacionado al grupo de entradas que tengo sobre Ansible y Mysql. Si no estás muy familiarizado con algunos de estos conceptos, vete ahí antes y revisa lo tengo escrito :)
Hoy te voy a explicar cómo habilitar SSL en tu servidor mysql para encriptar las conexiones y transacciones de tu base de datos. Supongo que ya sabrás lo que es SSL y sus beneficios (si no, hay tropecientos millones de documentos en internet que lo explican...).
Básicamente las conexiones cliente-servidor se cifrar todas mediante los certificados SSL que tú configures. En general es muy sencillo de habilitar porque, principalmente, por defecto Mysql ya crea unos pares de ssl genéricos y cuya activación es muy muy sencilla. Sería:
Habilita SSL en tu servidor Mysql
- Modifica el fichero mysqld.conf y habilita el uso de ssl:
# # * SSL auth & segure max_connections # # By deault, mysql generate its own ssl certs into /var/lib/mysql ssl_ca = /path/a/tu/ca.pem ssl_cert = /path/a/tu/cert.pem ssl_key = /path/a/tu/key.pem
- Reinicia el servidor msyql para aplicar los cambios
- Para probar de una forma muy rudimentaria usa este comando:
# Como root, forza la conexión socket que sea ssl y mysql te notificará que estás con ssl pero no que tiene mucho sentido hacerlo desde la misma máquina desde una conexión socket... (con razón! jaja) mysql --ssl-mode=REQUIRED
- LISTO!
Accede desde fuera a tu mysql con SSL
Como te había comentado antes, mysql ya crea unos certificados ssl propios (si, te puedes crear tu los tuyos o usar unos que ya tengas!!) por lo que podemos usar eses mismos. Lo que tienes que hacer es:
- Guardar los .pem en un mismo lugar ya que los usaras para cualquier cliente que desees conectarlo a tu mysql:
- Están ubicandos por defecto en /var/lib/mysql
- Deberás guardar los ficheros:
- ca.pem
- client-cert.pem
- client-key.pem
- Cuando quieras hacer una conexión SSL contra tu servidor mysql, deberás usar estos certificados en la parametrización de la conexión:
- Tanto a nivel de conexión desde la terminal con comandos
- Tanto a nivel de configuración .my.cnf
- Tanto a nivel de aplicación
- LISTO!