Pular para o conteúdo principal

🔐 MySQL-based SSL/TLS Encrypted Connection (MySQL/MariaDB/Percona)

Este recurso permite ativar conexões criptografadas com SSL/TLS entre sua aplicação e os bancos de dados MySQL, MariaDB ou Percona. Ao habilitar esse recurso, todos os dados trafegam de forma segura, protegidos contra interceptação.

✅ Recomendado para aplicações com informações sensíveis, sistemas em rede pública ou que exigem conformidade com padrões de segurança como LGPD, PCI ou HIPAA.


⚙️ Como habilitar o Add-on na SaveinCloud

  1. Acesse o painel do seu ambiente e clique na opção Add-ons na instância do seu banco de dados MySQL.
  2. Localize o add-on MySQL-bases SSL/TLS Encrypted Connection e clique em Instalar.

MySQL-based SSL/TLS Encrypted Connection Addons

Na tela de instalação do add-on, você deverá preencher:

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

  • Environment: Ambiente desejado
  • Node Group(s): Grupo de nós onde o complemento será instalado

Em um minuto, seu banco de dados será reconfigurado para funcionar por meio de uma conexão criptografada.


📁 Localização dos certificados

Os certificados são gerados automaticamente com o utilitário /usr/local/sbin/selfcertgen. Eles são autoassinados e emitidos com base no hostname de cada nó.

📂 Diretório dos certificados:
/var/lib/jelastic/keys/SSL-TLS

Este diretório possui duas subpastas:

  • client – contém os certificados de cliente para download e uso na autenticação
  • server – contém os certificados utilizados pelo banco para habilitar a criptografia TLS

MySQL-based SSL/TLS Encrypted Connection pasta dos certificados


🛠️ Configurações complementares

Configurações adicionais são aplicadas automaticamente no arquivo:

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

Conteúdo padrão:

[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

💡 A opção require_secure_transport=ON (comentada por padrão) força o uso exclusivo de conexões SSL.

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


🔄 Gerenciamento do add-on

Após a instalação, você pode:

MySQL-based SSL/TLS Encrypted Connection guia addons

  • 📥 Reemitir certificados clicando em Re-issue certificates

    Útil em situações como perda acidental dos arquivos .crt/.key, ou caso você suspeite que os certificados foram comprometidos.

  • Desinstalar o complemento usando o menu no canto superior direito

    Remove também os certificados SSL gerados e as configurações aplicadas.


🧪 Testando conexão via SSL (criptografia em trânsito)

A “criptografia em trânsito” (criptografia do lado do servidor) funciona desde a instalação do complemento. Você pode verificar conectando-se usando as credenciais do banco de dados que chegam no e-mail. Para a conexão remota, você pode adicionar o Endpoints ou IP público.

MySQL-based SSL/TLS Encrypted Connection endpoint

Use o seguinte comando para testar a conexão com criptografia (lado do servidor):

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

Onde:

  • {host} – ponto de entrada do banco de dados (endpoint ou IP público).
  • {port} – porta utilizada para conexão (geralmente 3306).
  • {user} – nome de usuário do banco de dados utilizado para autenticação.

Verifique no comando status se há uma linha SSL na saída:

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

SSL: Cipher in use is TLS_AES_256_GCM_SHA384

🧠 Para conexões externas, utilize o IP público ou Endpoint do seu banco.


🔒 Tornando o uso de certificados obrigatório

Enquanto estiver conectado ao servidor, você pode configurar o uso de certificados de cliente para autenticação criptografia do lado do servidor e do cliente. Execute o comando abaixo para tornar a autenticação SSL obrigatória para o usuário especificado.

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

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


atenção

Nota: O Common Name (CN) não é verificado por padrão. Qualquer certificado assinado pela CA será aceito.

Se desejar garantir que apenas certificados emitidos para um determinado usuário sejam aceitos, utilize:

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

💡 Caso deseje utilizar apenas certificados para login, você pode remover a exigência de senha usando o comando ALTER USER.


📦 Conectando com certificados SSL

Agora forneça ao servidor client (computador/conteiner/VM) os arquivos de certificado SSL apropriados, que podem ser baixados do diretório /var/lib/jelastic/SSL-TLS/client do nó destino desejado. Uma vez feito isso, você pode se conectar utilizando o seguinte 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 a autoridade certificadora do servidor.


dica

Para evitar ter que passar os caminhos dos certificados em cada conexão, adicione-os ao seu arquivo ~/.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

💡 Assim, ao executar mysql, os certificados serão aplicados automaticamente.

📚 Documentação e Recursos

🧠 Suporte

Caso tenha dúvidas, encontre dificuldades na configuração ou precise de ajuda em situações específicas, entre em contato com o suporte técnico da SaveinCloud através dos canais disponíveis no painel da plataforma.