Recientemente me tocó configurar un servidor MySQL para autenticar usuarios mediante certificados SSL en lugar de contraseñas. El mecanismo de autenticación necesita un certificado para el servidor MySQL y un certificado para cada usuario, todos firmados por la misma autoridad certificante (CA).



La configuración es bastante sencilla. Para habilitar SSL en MySQL es necesario agregar la ruta a los certificados de la CA y del servidor en el archivo my.cnf:

  1. Editar el archivo my.cnf:
    nano /etc/mysql/my.cnf
  2. Agregar las rutas al certificado de la CA, al certificado del servidor y a la clave privada del certificado del servidor:
    # * Security Features
    #
    # Read the manual, too, if you want chroot!
    # chroot = /var/lib/mysql/
    #
    # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
    #
    # ssl-ca=/etc/mysql/cacert.pem
    # ssl-cert=/etc/mysql/server-cert.pem
    # ssl-key=/etc/mysql/server-key.pem
    ssl-ca=/ruta/al/certificado/de/la/ca/certificado-ca.crt
    ssl-cert=/ruta/al/certificado/del/servidor/mysql/certificado-mysql.crt
    ssl-key=/ruta/a/la/clave/privada/del/certificado/del/servidor/mysql/certificado-mysql.key
  3. Los clientes que se conecten a través de SSL deben utilizar un certificado firmado por la misma CA que firma el certificado del servidor MySQL. Luego para una base de datos en particular (por ejemplo: "bd_ejemplo") se fuerza la autenticación mediante SSL agregando "require x509" en la sentencia "grant" (en este ejemplo se le otorgan todos los privilegios "all privileges" al usuario "usuario_ssl"):
    grant all privileges on bd_ejemplo.* to 'usuario_ssl'@'localhost' require x509;

Asumiendo que el usuario tiene un certificado firmado por la misma CA que firma el certificado del serivdor MySQL, el cliente realiza la conexión de la siguiente forma:

mysql -u usuario_ssl --ssl-key=/ruta/clave/privada/usuario.key --ssl-cert=/ruta/certificado/usuario.crt bd_ejemplo

Si en algún momento necesitan autenticar usuarios sin contraseña (por ejemplo usuarios para realizar backups) les puede ser útil.

Más adelante publicaré un artículo sobre cómo crear tu propia CA autofirmada, por lo tanto estén atentos...


Tal vez pueda interesarte


Compartí este artículo