Todos os produtos
Search
Central de documentação

PolarDB:Configure SSL encryption

Última atualização: Jun 28, 2026

Para aumentar a segurança dos dados em trânsito, ative a criptografia Secure Sockets Layer (SSL) e instale um certificado CA SSL nos clientes. O SSL criptografa conexões de rede na camada de transporte, o que melhora a segurança e a integridade dos dados, mas também pode aumentar o tempo de resposta da conexão.

Contexto

A Internet Engineering Task Force (IETF) padronizou o SSL 3.0 e o renomeou para Transport Layer Security (TLS). Embora o TLS seja o padrão moderno, este tópico usa o termo mais comum "SSL" para se referir à criptografia TLS.

Casos de uso

  • Acesso público ao banco de dados: Quando um cliente se conecta a um cluster PolarDB pela internet pública, o link de dados fica exposto a uma rede não confiável. É necessário criptografá-lo para evitar ataques do tipo man-in-the-middle.

  • Atendimento a requisitos de segurança e conformidade: Regulamentações setoriais ou de proteção de dados, como PCI-DSS e GDPR, exigem criptografia para dados sensíveis em trânsito.

  • Comunicação entre redes: Em arquiteturas de nuvem híbrida ou multi-VPC, os fluxos de dados que cruzam limites de rede devem usar criptografia SSL para garantir confidencialidade e integridade.

Limitações

  • Limite de criptografia por endpoint: Cada cluster suporta criptografia SSL para apenas um endpoint por vez. Se o cluster tiver endpoints público e interno, escolha um para criptografar conforme o caso de uso. Não é possível criptografar ambos simultaneamente.

  • Recomendações para escolher o endpoint a ser criptografado:

    • Se o acesso ao banco de dados ocorre pela internet pública, ative a criptografia SSL no endpoint público para mitigar riscos de segurança durante a transmissão de dados.

    • Caso o acesso ao banco de dados ocorra exclusivamente dentro de uma VPC e haja necessidade de cumprir requisitos de segurança e conformidade, ative a criptografia SSL no endpoint interno.

  • Limite de tamanho do endpoint: O endpoint de um cluster PolarDB com criptografia SSL ativada deve ter menos de 64 caracteres. Para saber como modificar o endpoint, consulte Configurar um proxy de banco de dados.

Precauções

Procedimento

Etapa 1: Ativar criptografia SSL

Importante

A ativação da criptografia SSL reinicia o cluster. Execute esta operação fora do horário de pico.

  1. Faça login no console do PolarDB. No painel de navegação à esquerda, clique em Clusters. Selecione a região do cluster e clique no ID do cluster.

  2. No painel de navegação à esquerda, escolha Settings and Management > Security.

  3. Na aba SSL Settings, clique no controle deslizante ao lado de SSL Status para ativar a criptografia SSL.

    Nota

    É possível configurar SSL para o endpoint primário, endpoint do cluster e endpoint personalizado.

  4. Na caixa de diálogo Configure SSL, selecione o endpoint a ser criptografado e clique em OK.

Etapa 2: Baixar certificado

Após ativar a criptografia SSL, baixe o certificado do cluster PolarDB para verificar a autenticidade do banco de dados quando um cliente se conectar remotamente ao cluster PolarDB.

  1. Na aba SSL Settings, clique em Download referente ao endpoint correspondente.

  2. O arquivo baixado é um pacote compactado que contém os três arquivos seguintes:

    • Arquivo .p7b: Usado para importar o certificado CA no Windows.

    • Arquivo .pem: Utilizado para importar o certificado CA em outros sistemas operacionais ou aplicações.

    • Arquivo .jks: Arquivo de truststore Java usado para importar a cadeia de certificados CA em aplicações Java. A senha é fixa: apsaradb.

      Nota

      Ao usar o arquivo de certificado JKS em Java, modifique as configurações de segurança padrão do JDK 7 e JDK 8. No servidor que se conecta ao banco de dados PolarDB, atualize as duas configurações a seguir no arquivo jre/lib/security/java.security:

      jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224
      jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

      Sem essa modificação, ocorre um erro semelhante ao exemplo abaixo. Outros erros parecidos também costumam ser causados por problemas na configuração de segurança do Java.

      javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints

Etapa 3: Conectar-se ao PolarDB

Depois de ativar a criptografia SSL, a efetividade da criptografia entre um cliente e um cluster PolarDB depende do tipo e das configurações do cliente. Alguns clientes, por exemplo, podem usar conexões criptografadas por padrão. Modifique as configurações ou o código do cliente para garantir o estabelecimento de uma conexão criptografada e verificar a identidade do cluster PolarDB.

Nota

Se você usa o DMS (Data Management) para fazer login e gerenciar seu cluster PolarDB, não é necessário criptografar a conexão.

CLI

Para versões do cliente MySQL 5.7.11 e posteriores, adicione a opção --ssl-mode ao comando de conexão para configurar a criptografia SSL.

  • --ssl-mode=DISABLED: A conexão não é criptografada.

  • --ssl-mode=PREFERRED ou omissão da opção --ssl-mode: Tenta uma conexão criptografada, mas reverte para uma não criptografada se a tentativa falhar.

  • --ssl-mode=REQUIRED: Exige uma conexão criptografada; a conexão falha se não for possível estabelecê-la.

  • --ssl-mode=VERIFY_CA: Requer conexão criptografada e verifica o certificado do servidor em relação ao certificado CA local.

  • --ssl-mode=VERIFY_IDENTITY: Exige conexão criptografada, valida o certificado do servidor contra o CA local e confirma se o hostname ou endereço IP do servidor corresponde ao especificado na conexão.

Exemplo 1: Tentar estabelecer uma conexão criptografada, revertendo para uma conexão não criptografada em caso de falha.

mysql -h {endpoint} -u {username} -p --ssl-mode=PREFERRED

Exemplo 2: Exigir uma conexão criptografada e verificar o certificado do servidor em relação a uma CA confiável.

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={path_to_ca_certificate}/ApsaraDB-CA-Chain.pem
Nota
  • Nos exemplos anteriores, substitua {endpoint}, {username} e {path_to_ca_certificate} pelos valores reais.

  • Para mais informações sobre a opção --ssl-mode, consulte a documentação oficial do MySQL.

MySQL Workbench

  1. Abra o MySQL Workbench e escolha Database > Manage Connections.

  2. Insira o endpoint, nome de usuário e senha do cluster PolarDB.

  3. Na aba SSL, selecione uma opção para Use SSL, forneça o caminho do certificado PEM baixado em SSL CA File e clique em Test Connection ou OK.

    Nota

    Para as opções de Use SSL, veja a descrição de --ssl-mode para conexões via linha de comando.

Código da aplicação

Java

O Connector/J (mysql-connector-java) é o driver JDBC oficial fornecido pelo MySQL. Este exemplo usa mysql-connector-java 8.0.19 como dependência.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
Nota

O código de exemplo abaixo usa a propriedade sslMode para especificar o modo SSL. Essa propriedade está disponível no mysql-connector-java versão 8.0.13 e posteriores. Se utilizar uma versão anterior, use as propriedades useSSL, requireSSL e verifyServerCertificate. Para detalhes, consulte a documentação do MySQL.

Código de exemplo:

package com.example.ssltest;

import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {
    public static void main(String[] args) {
       Connection conn = null;
        MysqlDataSource mysqlDS=null;

        try{
            mysqlDS = new MysqlDataSource();
            // Set SslMode as needed. For available options, see the command-line connection instructions.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
          
            // The truststore stores the CA certificate. Here, the truststore type is set to JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Replace the path after file:// with the path to your ApsaraDB-CA-Chain.jks file.
            mysqlDS.setTrustCertificateKeyStoreUrl("file://{path_to_ca_certificate}/ApsaraDB-CA-Chain.jks");
            // The password for the downloaded JKS file is apsaradb and cannot be changed.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            // Your cluster endpoint
            mysqlDS.setServerName("your_polardb_endpoint");
            // Your database port
            mysqlDS.setPort(3306);
            // Your database username
            mysqlDS.setUser("your_username");
            // Your database password
            mysqlDS.setPassword("your_password");
            // Your database name
            mysqlDS.setDatabaseName("your_database");

            System.out.println("Attempting to connect to the database...");
            conn = mysqlDS.getConnection();
            System.out.println("Database connection successful!");
            
            // Use try-with-resources to ensure that Statement and ResultSet are automatically closed.
            try (Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("SELECT VERSION()")) {
                
                // Check if the query returned a result.
                if (rs.next()) {
                    // Get the result from the first column and print it.
                    String dbVersion = rs.getString(1);
                    System.out.println("Database version: " + dbVersion);
                } else {
                    System.out.println("Failed to retrieve database version information.");
                }
            }

        }catch(Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Python

# Install pymysql
# pip install pymysql

import pymysql

# --- Configure your database information ---
db_config = {
    'host': 'your_polardb_endpoint',      # Your cluster endpoint
    'user': 'your_username',            # Your username
    'password': 'your_password',        # Your password
    'database': 'your_database',        # The database that you want to connect to
    'port': 3306
}

# --- Configure SSL information ---
ssl_args = {
    'ca': '{path_to_ca_certificate}/ApsaraDB-CA-Chain.pem',
    # Verifies the server's certificate against the specified CA.
    'ssl_verify_cert': True
}

try:
    # Establish the connection, passing the ssl arguments.
    print("Attempting to connect to MySQL using SSL...")
    connection = pymysql.connect(**db_config, ssl=ssl_args)
    print("SSL connection successful!")

    with connection.cursor() as cursor:
        # Execute a simple query to verify the connection.
        cursor.execute("SELECT VERSION()")
        version = cursor.fetchone()
        print(f"Database version: {version[0]}")

except pymysql.MySQLError as e:
    # Printing SSL-related errors can be helpful.
    print(f"Connection failed: {e}")
finally:
    if 'connection' in locals() and connection.open:
        connection.close()
        print("Database connection closed.")

Sysbench

  1. Baixe o certificado e descompacte o pacote.

  2. Configure o Sysbench:

    1. Adicione a flag --mysql-ssl=on à linha de comando do sysbench.

    2. Se usar o Sysbench 1.0.x, renomeie o arquivo .pem para cacert.pem no diretório onde executa o comando sysbench. Isso é necessário porque o Sysbench define internamente o nome do certificado SSL como cacert.pem.

    3. Para o Sysbench 1.1.x, siga a configuração do 1.0.x ou especifique o caminho do arquivo PEM usando o parâmetro --mysql-ssl-ca.

  3. Para informações sobre métodos de benchmark, consulte Métodos de teste de desempenho (OLTP).

    Nota

    Ao executar o benchmark, garanta que a versão do MySQL Client seja compatível com a versão do MySQL do cluster PolarDB.

Etapa 4: Verificar conexão criptografada

O protocolo SSL possui diversas versões. Atualmente, o PolarDB suporta TLSv1.2 e posteriores. Durante o handshake SSL, o cliente e o servidor PolarDB trocam informações de negociação, incluindo versão TLS, suítes de criptografia e chaves de sessão. Para uma lista detalhada das suítes de criptografia, consulte o site do OpenSSL.

  1. Conecte-se ao cluster PolarDB usando um cliente com SSL configurado.

  2. Execute a seguinte consulta SQL:

    SHOW STATUS LIKE 'ssl_cipher';
    
    +---------------+---------------------------+
    | Variable_name | Value                     |
    +---------------+---------------------------+
    | Ssl_cipher    | DHE-RSA-AES256-GCM-SHA384 |
    +---------------+---------------------------+
    • Se a coluna Value retornar um valor não vazio (como DHE-RSA-AES256-GCM-SHA384), a conexão atual está criptografada.

    • Caso a coluna Value esteja vazia, a conexão atual não está criptografada. Verifique se a configuração do cliente está correta.

Manutenção e gerenciamento

Alterar o endpoint protegido

Para alterar o endpoint protegido, clique em Configure SSL no endpoint desejado.

Importante

A alteração do endpoint protegido atualiza automaticamente o certificado SSL e reinicia o cluster. Execute esta operação fora do horário de pico.

Atualizar validade do certificado

Atualize manualmente o período de validade do certificado caso tenha alterado o endpoint SSL ou se o certificado estiver prestes a expirar. Os passos a seguir descrevem como realizar essa atualização.

Importante

A atualização do período de validade do certificado reinicia o cluster. Programe esta operação fora do horário de pico.

  1. Na aba SSL Settings, clique em Update Validity Period.

  2. Na caixa de diálogo exibida, clique em OK.

  3. Após a atualização do período de validade, baixe o novo certificado e configure os clientes para usá-lo.

Ativar rotação automática de certificados

Ao ativar a rotação automática de certificados, o PolarDB atualiza automaticamente o certificado dentro da janela de manutenção do cluster nos 10 dias anteriores ao vencimento.

Importante

A renovação automática de certificados reinicia o cluster. Execute esta operação fora do horário de pico.

  1. Na aba SSL Settings, clique em Advanced Settings.

  2. Na caixa de diálogo Advanced Settings, ative a rotação automática de certificados e clique em Confirm.证书自动轮换

Desativar criptografia SSL

Importante

A desativação da criptografia SSL reinicia o cluster. Execute esta operação fora do horário de pico.

  1. Na aba SSL Settings, clique no controle deslizante ao lado de SSL Status para desativar a criptografia SSL.

  2. Na caixa de diálogo exibida, clique em OK.

APIs relacionadas

API

Descrição

DescribeDBClusterSSL

Consulta as configurações SSL de um cluster PolarDB.

ModifyDBClusterSSL

Ativa ou desativa a criptografia SSL, ou atualiza o certificado CA de um cluster PolarDB.