Saltar al contenido principal

🔐 Conexión Encriptada SSL/TLS basada en MySQL (MySQL/MariaDB/Percona)

Esta función permite activar conexiones encriptadas con SSL/TLS entre su aplicación y las bases de datos MySQL, MariaDB o Percona. Al habilitar esta función, todos los datos viajan de forma segura, protegidos contra interceptaciones.

✅ Recomendado para aplicaciones con información sensible, sistemas en red pública o que requieren cumplimiento con estándares de seguridad como LGPD, PCI o HIPAA.


⚙️ Cómo habilitar el Add-on en SaveinCloud

  1. Acceda al panel de su entorno y haga clic en la opción Add-ons en la instancia de su base de datos MySQL.
  2. Localice el add-on MySQL-based SSL/TLS Encrypted Connection y haga clic en Instalar.

MySQL-based SSL/TLS Encrypted Connection Addons

En la pantalla de instalación del add-on, deberá completar:

MySQL-based SSL/TLS Encrypted Connection Confiuração de instalação

  • Environment: Entorno deseado
  • Node Group(s): Grupo(s) de nodos donde se instalará el complemento

En un minuto, su base de datos será reconfigurada para funcionar mediante una conexión encriptada.


📁 Ubicación de los certificados

Los certificados se generan automáticamente con la utilidad /usr/local/sbin/selfcertgen. Son autofirmados y emitidos basándose en el hostname de cada nodo.

📂 Directorio de los certificados:
/var/lib/jelastic/keys/SSL-TLS

Este directorio contiene dos subcarpetas:

  • client – contiene los certificados de cliente para descargar y usar en la autenticación
  • server – contiene los certificados usados por la base para habilitar la encriptación TLS

MySQL-based SSL/TLS Encrypted Connection pasta dos certificados


🛠️ Configuraciones complementarias

Configuraciones adicionales se aplican automáticamente en el archivo:

/etc/mysql/conf.d/ssl-config.cnf

Contenido por defecto:

[mysqld]
ssl_ca=/var/lib/jelastic/keys/SSL-TLS/server/root.crt
ssl_cert=/var/lib/jelastic/keys/SSL-TLS/server/server.crt
ssl_key=/var/lib/jelastic/keys/SSL-TLS/server/server.key
#ssl-cipher=ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA
#require_secure_transport=ON

💡 La opción require_secure_transport=ON (comentada por defecto) fuerza el uso exclusivo de conexiones SSL.

MySQL-based SSL/TLS Encrypted Connection arquivo configurção server


🔄 Gestión del add-on

Después de la instalación, puede:

MySQL-based SSL/TLS Encrypted Connection guia addons

  • 📥 Reemitir certificados haciendo clic en Re-issue certificates

    Útil en situaciones como pérdida accidental de los archivos .crt/.key, o si sospecha que los certificados fueron comprometidos.

  • Desinstalar el complemento usando el menú en la esquina superior derecha

    También elimina los certificados SSL generados y las configuraciones aplicadas.


🧪 Probando conexión vía SSL (encriptación en tránsito)

La “encriptación en tránsito” (encriptación del lado del servidor) funciona desde la instalación del complemento. Puede verificar conectándose usando las credenciales de la base de datos que llegan por correo electrónico. Para la conexión remota, puede añadir el Endpoints o IP público.

MySQL-based SSL/TLS Encrypted Connection endpoint

Use el siguiente comando para probar la conexión con encriptación (lado servidor):

mysql --ssl-mode=required -h {host} -P {port} -u {user} -p

Dónde:

  • {host} – punto de entrada de la base de datos (endpoint o IP público).
  • {port} – puerto usado para la conexión (generalmente 3306).
  • {user} – nombre de usuario de la base de datos usado para autenticación.

Verifique en el comando status si hay una línea SSL en la salida:

MySQL-based SSL/TLS Encrypted Connection teste conexão segura

SSL: Cipher in use is TLS_AES_256_GCM_SHA384

🧠 Para conexiones externas, utilice el IP público o Endpoint de su base.


🔒 Haciendo obligatorio el uso de certificados

Mientras esté conectado al servidor, puede configurar el uso de certificados de cliente para autenticación y encriptación del lado del servidor y cliente. Ejecute el siguiente comando para hacer obligatoria la autenticación SSL para el usuario especificado.

ALTER USER 'usuario'@'%' REQUIRE X509;
ALTER USER 'usuario'@'localhost' REQUIRE X509;

MySQL-based SSL/TLS Encrypted Connection tornando obrigatório conexão segura


aviso

Nota: El Common Name (CN) no se verifica por defecto. Cualquier certificado firmado por la CA será aceptado.

Si desea garantizar que solo se acepten certificados emitidos para un usuario determinado, utilice:

ALTER USER 'usuario'@'%' REQUIRE SUBJECT 'CN=usuario';
ALTER USER 'usuario'@'localhost' REQUIRE SUBJECT 'CN=usuario';

💡 Si desea usar solo certificados para login, puede eliminar la exigencia de contraseña usando el comando ALTER USER.


📦 Conectando con certificados SSL

Ahora proporcione al servidor cliente (computadora/contenedor/VM) los archivos de certificado SSL apropiados, que pueden descargarse del directorio /var/lib/jelastic/SSL-TLS/client del nodo destino deseado. Una vez hecho esto, puede conectarse utilizando el siguiente comando:

mysql –h {host} -P {port} -u {user} -p --ssl-mode=VERIFY_CA  --ssl-ca={path/to/root.crt} --ssl-cert={path/to/client.crt} –ssl-key={path/to/client.key}

🔒 Recomendado usar VERIFY_CA para validar la autoridad certificadora del servidor.


tip

Para evitar tener que pasar las rutas de los certificados en cada conexión, añádalos a su archivo ~/.my.cnf:

[client]
ssl-ca = /var/lib/jelastic/keys/root.crt
ssl-cert = /var/lib/jelastic/keys/client.crt
ssl-key = /var/lib/jelastic/keys/client.key

💡 Así, al ejecutar mysql, los certificados se aplicarán automáticamente.

📚 Documentación y Recursos

🧠 Soporte

Si tiene dudas, encuentra dificultades en la configuración o necesita ayuda en situaciones específicas, contacte con el soporte técnico de SaveinCloud a través de los canales disponibles en el panel de la plataforma.