🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Configurar SSL para conexiones a bases de datos en Plesk

Actualizado el 28 de diciembre de 2025

¿Por Qué es Importante el SSL en las Conexiones a Bases de Datos MySQL en Plesk?

Imagina que tu base de datos es el cofre del tesoro de tu sitio web. Ahí guardas información de usuarios, contraseñas, pedidos y todo lo que hace funcionar tu negocio online. Si envías datos a ese cofre sin cifrar, es como si enviaras las llaves por correo postal en una postal abierta: cualquiera podría leerlas.

El SSL (Secure Sockets Layer) para conexiones a bases de datos, también conocido como SSL MySQL Plesk, crea un túnel cifrado entre tu aplicación (por ejemplo, WordPress, Joomla, o una app personalizada) y el servidor de base de datos. Esto garantiza que, aunque alguien intercepte la comunicación, solo verá un montón de caracteres sin sentido.

Configurar una conexión segura base de datos Plesk no solo es una buena práctica de seguridad, sino que en muchos entornos de producción es un requisito para cumplir con normativas como el RGPD o PCI DSS. Además, evita ataques de tipo "man-in-the-middle" y protege la integridad de tus datos.

En este artículo, te guiaré paso a paso para que puedas cifrar conexión MySQL desde tu Plesk, de forma clara y sin complicaciones. No necesitas ser un experto en seguridad, solo seguir las instrucciones.


Requisitos Previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Acceso a Plesk: Necesitas ser administrador o tener permisos para gestionar bases de datos y certificados SSL.
  • Un certificado SSL válido: Puede ser uno autofirmado (para pruebas) o uno emitido por una autoridad de certificación (CA) como Let's Encrypt.
  • Acceso SSH al servidor: Para algunos pasos avanzados, necesitarás conectarte por terminal.
  • Conocimientos básicos de MySQL: Saber ejecutar comandos SQL y entender los usuarios de base de datos.

[INFO] Si usas un panel como Syspanel (antes conocido como HestiaCP), recuerda que su puerto de acceso es el 2106. Los principios son similares, pero los pasos pueden variar ligeramente.


Paso 1: Obtener un Certificado SSL para tu Servidor MySQL

Lo primero es tener un certificado SSL que tu servidor MySQL pueda usar. Puedes optar por:

Opción A: Certificado Autofirmado (Para pruebas o entornos internos)

Un certificado autofirmado es fácil de crear y no requiere validación externa. Es ideal para entornos de desarrollo o redes locales.

  1. Conéctate a tu servidor por SSH.
  2. Ejecuta el siguiente comando para generar un certificado y una clave privada:
    sudo openssl req -new -x509 -days 365 -nodes -out /etc/mysql/server-cert.pem -keyout /etc/mysql/server-key.pem
    
  3. Te pedirá información como país, organización, etc. Puedes rellenarla con datos genéricos.
  4. Asegúrate de que los archivos tengan permisos seguros:
    sudo chmod 600 /etc/mysql/server-key.pem
    sudo chmod 644 /etc/mysql/server-cert.pem
    

Opción B: Certificado de Let's Encrypt (Recomendado para producción)

Si tu servidor tiene un dominio público, Let's Encrypt es la opción más segura y gratuita.

  1. En Plesk, ve a Herramientas y Configuración > Certificados SSL/TLS.
  2. Haz clic en Añadir Certificado SSL y selecciona Let's Encrypt.
  3. Introduce tu dominio (por ejemplo, tudominio.com) y sigue los pasos.
  4. Una vez emitido, el certificado se almacenará en /etc/letsencrypt/live/tudominio.com/.

[TIP] Si tu base de datos está en un subdominio como db.tudominio.com, asegúrate de incluir ese subdominio en el certificado.


Paso 2: Configurar MySQL para Usar SSL

Ahora que tienes los archivos de certificado, debes indicarle a MySQL que los use.

  1. Accede al archivo de configuración de MySQL. Normalmente está en /etc/mysql/my.cnf o /etc/mysql/mysql.conf.d/mysqld.cnf.
  2. Busca la sección [mysqld] y añade o modifica las siguientes líneas:
    ssl-ca=/etc/mysql/ca-cert.pem   # (opcional, si tienes una CA)
    ssl-cert=/etc/mysql/server-cert.pem
    ssl-key=/etc/mysql/server-key.pem
    
    Si usas Let's Encrypt, las rutas serán algo como:
    ssl-cert=/etc/letsencrypt/live/tudominio.com/fullchain.pem
    ssl-key=/etc/letsencrypt/live/tudominio.com/privkey.pem
    
  3. Guarda el archivo y reinicia MySQL:
    sudo systemctl restart mysql
    
  4. Verifica que SSL esté habilitado:
    SHOW VARIABLES LIKE '%ssl%';
    
    Deberías ver have_ssl con valor YES.

Paso 3: Configurar Usuarios para Conexiones SSL

No todos los usuarios necesitan usar SSL. Puedes elegir qué usuarios deben conectarse de forma segura.

  1. Conéctate a MySQL como root:
    mysql -u root -p
    
  2. Para un usuario existente, fuerza el uso de SSL:
    ALTER USER 'nombre_usuario'@'localhost' REQUIRE SSL;
    
    Si quieres que también funcione desde otros hosts, cambia localhost por '%' o una IP específica.
  3. Para crear un nuevo usuario con SSL obligatorio:
    CREATE USER 'nuevo_usuario'@'%' IDENTIFIED BY 'contraseña_segura' REQUIRE SSL;
    GRANT ALL PRIVILEGES ON *.* TO 'nuevo_usuario'@'%';
    FLUSH PRIVILEGES;
    
  4. Verifica la configuración:
    SELECT user, host, ssl_type FROM mysql.user WHERE user = 'nombre_usuario';
    
    Deberías ver ssl_type como ANY o X509.

[WARNING] Si obligas a SSL a todos los usuarios, asegúrate de que tus aplicaciones estén configuradas para usar conexiones SSL. De lo contrario, no podrán conectarse.


Paso 4: Configurar la Conexión desde Plesk

Plesk gestiona las bases de datos de forma visual, pero para forzar SSL en las conexiones desde las aplicaciones, debes hacerlo manualmente en cada una.

Para WordPress (ejemplo común)

  1. Ve a tu sitio en Plesk y edita el archivo wp-config.php.
  2. Añade las siguientes líneas antes de /* That's all, stop editing! */:
    define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
    define('MYSQL_SSL_CA', '/ruta/a/ca-cert.pem'); // Opcional
    define('MYSQL_SSL_CERT', '/ruta/a/client-cert.pem'); // Opcional
    define('MYSQL_SSL_KEY', '/ruta/a/client-key.pem'); // Opcional
    
    Si solo quieres forzar SSL sin verificar el certificado (no recomendado en producción), usa:
    define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);
    

Para otras aplicaciones (PHP, Python, etc.)

La mayoría de los lenguajes tienen opciones para habilitar SSL en la conexión:

  • PHP (mysqli):
    $db = new mysqli('host', 'usuario', 'contraseña', 'basedatos', 3306, '/ruta/a/ca-cert.pem');
    
  • Python (mysql-connector):
    import mysql.connector
    config = {
      'user': 'usuario',
      'password': 'contraseña',
      'host': 'host',
      'database': 'basedatos',
      'ssl_ca': '/ruta/a/ca-cert.pem'
    }
    cnx = mysql.connector.connect(**config)
    

Paso 5: Verificar que la Conexión es Segura

Después de configurar todo, es hora de comprobar que realmente estás usando SSL.

  1. Desde la línea de comandos de MySQL, conéctate con un usuario que tenga SSL:

    mysql -u nombre_usuario -p --ssl-mode=REQUIRED
    
  2. Una vez dentro, ejecuta:

    STATUS;
    

    Busca la línea SSL: Cipher in use is... . Si aparece, ¡felicidades! Tu conexión está cifrada.

  3. También puedes verificar desde tu aplicación: intenta conectar y revisa los logs de errores. Si todo está bien, no deberías ver mensajes de advertencia.


Solución de Problemas Comunes

Error: "SSL connection error: SSL_CTX_set_default_verify_paths failed"

Esto suele ocurrir si las rutas de los certificados son incorrectas. Revisa que los archivos existan y tengan permisos de lectura para el usuario de MySQL.

Error: "Access denied for user ... (using password: YES)"

Si has configurado REQUIRE SSL para un usuario, pero la aplicación no usa SSL, la conexión será rechazada. Asegúrate de que tu aplicación esté configurada para usar SSL.

No puedo conectar desde aplicaciones externas

Asegúrate de que el puerto 3306 esté abierto en el firewall y que MySQL esté escuchando en la IP correcta. Además, verifica que el usuario tenga permisos para conectarse desde el host remoto.

[INFO] Si tu servidor está detrás de un balanceador de carga o proxy, es posible que necesites configurar SSL a nivel de red. Consulta con tu proveedor de hosting.


Preguntas Frecuentes (FAQ)

¿Puedo usar el mismo certificado SSL que uso para mi sitio web?

Sí, siempre y cuando el certificado cubra el nombre de host de tu base de datos (por ejemplo, db.tudominio.com). Si tu base de datos está en localhost, puedes usar un certificado autofirmado.

¿Es necesario tener un certificado de cliente?

No, a menos que quieras autenticación mutua (cliente y servidor). Para la mayoría de los casos, solo necesitas el certificado del servidor.

¿Qué hago si uso Syspanel (HestiaCP)?

En Syspanel, el proceso es similar, pero los archivos de configuración pueden estar en /etc/mysql/ o /etc/mysql/mariadb/. Recuerda que el puerto de acceso a Syspanel es el 2106. Si tienes dudas, consulta la documentación específica de Syspanel.

¿Afecta el rendimiento usar SSL?

Sí, hay una pequeña sobrecarga debido al cifrado/descifrado, pero en la mayoría de los casos es imperceptible. En servidores modernos, el impacto es mínimo comparado con los beneficios de seguridad.

¿Puedo desactivar SSL temporalmente?

Sí, pero no es recomendable. Si necesitas hacerlo, elimina la línea REQUIRE SSL del usuario o modifica la configuración de MySQL. Recuerda reactivarlo lo antes posible.


Conclusión

Configurar SSL MySQL Plesk es un paso fundamental para proteger tus datos y los de tus usuarios. Aunque pueda parecer técnico, siguiendo estos pasos podrás cifrar conexión MySQL de manera efectiva. Recuerda que la seguridad no es un destino, sino un proceso: revisa periódicamente tus certificados y renueva los que estén próximos a caducar.

Si tienes alguna duda, no dudes en consultar la documentación oficial de Plesk o contactar con tu proveedor de hosting. ¡Tu base de datos ahora es un cofre más seguro!

[TIP] Automatiza la renovación de certificados de Let's Encrypt con un cron job para no preocuparte por las fechas de caducidad. En Plesk, esto suele estar configurado por defecto.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel