Todos os produtos
Search
Central de documentação

PolarDB:Configure SSL encryption

Última atualização: Aug 27, 2026

Para aumentar a segurança dos dados em trânsito, ative a criptografia Secure Sockets Layer (SSL) e instale um certificado de autoridade certificadora (CA) nos seus service de aplicação. O SSL criptografa as conexões de rede na camada de transporte para melhorar a segurança e a integridade dos dados, mas isso pode aumentar a latência da conexão.

Informações básicas

O SSL é um protocolo de segurança desenvolvido originalmente pela Netscape para criar um canal seguro de transmissão de dados entre um navegador web e um servidor web. Ele utiliza algoritmos de criptografia como RC4, MD5 e RSA para proteger as comunicações. A Internet Engineering Task Force (IETF) padronizou o SSL 3.0 e o renomeou para Transport Layer Security (TLS). Embora SSL seja o termo mais comum, este documento refere-se à criptografia TLS ao discutir a criptografia SSL.

Cenários

  • Acesso ao banco de dados pela internet pública: 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. A criptografia é necessária para evitar ataques man-in-the-middle.

  • Atendimento a requisitos de segurança e conformidade: Certas regulamentações do setor ou de proteção de dados, como PCI-DSS e GDPR, exigem criptografia para dados confidenciais em trânsito.

  • Comunicação entre ambientes de rede: Em uma arquitetura de cloud híbrida ou multi-VPC, os fluxos de dados que cruzam limites de rede requerem criptografia SSL para garantir sua confidencialidade e integridade.

Limitações

  • Criptografia de endpoint único: Cada cluster suporta criptografia SSL para apenas um endpoint por vez. Se o seu cluster estiver configurado com um endpoint público e um interno, você deve escolher qual deles criptografar com base no seu cenário de negócios.

  • Recomendações para escolha do endpoint a ser criptografado:

    • Se você acessa o banco de dados pela internet pública, recomendamos ativar a criptografia SSL para o endpoint público a fim de proteger os dados em trânsito.

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

  • Limite de comprimento do endpoint: Um endpoint do PolarDB com criptografia SSL ativada deve ter menos de 64 caracteres. Para obter informações sobre como modificar um endpoint, consulte Configure PolarProxy.

Importante

Procedimento

Etapa 1: Ativar criptografia SSL

Importante

A ativação da criptografia SSL reinicia o cluster. Recomendamos realizar esta operação fora dos horários de pico.

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

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

  3. Na aba SSL Settings, ative a chave SSL Status para habilitar a criptografia SSL.

    Nota

    É possível configurar SSL para endpoints primários, de cluster e personalizados.

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

Etapa 2: Baixar o 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 na seção correspondente ao endpoint desejado.

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

    • Arquivo .p7b: Destinado à importação do certificado CA no Windows.

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

    • Arquivo .jks: Arquivo de certificado truststore Java, com a senha apsaradb, usado para importar a cadeia de certificados CA em aplicações Java.

      Nota

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

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

      Se você não modificar as configurações de segurança do JDK, poderá ocorrer um erro semelhante ao seguinte. Este e outros erros relacionados são geralmente causados por configurações de segurança Java incorretas.

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

Etapa 3: Conectar-se ao PolarDB a partir de um cliente

Depois de ativar a criptografia SSL, a existência de criptografia na conexão entre um cliente e o cluster PolarDB depende do tipo e das configurações do cliente. Por exemplo, alguns clientes podem usar conexões criptografadas por padrão. Modifique as configurações ou o código do cliente para estabelecer uma conexão criptografada e verificar a identidade do cluster PolarDB.

Nota

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

CLI

Para clientes MySQL versão 5.7.11 e posteriores, utilize a opção --ssl-mode no 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 estabelecer uma conexão criptografada. Se falhar, estabelece uma conexão não criptografada.

  • --ssl-mode=REQUIRED: Exige uma conexão criptografada. A conexão falha se não for possível estabelecer uma conexão criptografada.

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

  • --ssl-mode=VERIFY_IDENTITY: Exige uma conexão criptografada, verifica o certificado do servidor em relação ao certificado CA local e confirma se o nome do host ou endereço IP do servidor corresponde ao usado para a conexão.

Exemplo 1: Tentativa de estabelecer uma conexão criptografada, com fallback para 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.

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={CA certificate path}/ApsaraDB-CA-Chain.pem
Nota
  • Substitua {endpoint}, {username} e {CA certificate path} pelos seus valores reais.

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

MySQL Workbench

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

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

  3. Na aba SSL, defina o parâmetro Use SSL, configure SSL CA File com o caminho do certificado CA baixado no formato PEM e clique em Test Connection ou OK.

    Nota

    Para obter uma explicação sobre as opções de Use SSL, consulte a descrição da opção --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 para MySQL. Este exemplo usa mysql-connector-java versão 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 a seguir usa a propriedade sslMode para especificar o modo SSL. Essa propriedade é suportada nas versões 8.0.13 e posteriores do mysql-connector-java. Se você estiver usando uma versão anterior, deverá usar 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 options, see the command-line connection instructions.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
            // The truststore contains the CA certificate. Set the truststore type to JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Replace the path after file:/ with the path to your ApsaraDB-CA-Chain.jks file.
            mysqlDS.setTrustCertificateKeyStoreUrl("file://{CA certificate path}/ApsaraDB-CA-Chain.jks");
            // The password for the downloaded JKS file is apsaradb and cannot be changed.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
            // Your database endpoint
            mysqlDS.setServerName("your_polardb_host");
            // 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 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_host',          # Your cluster endpoint
    'user': 'your_username',            # Your username
    'password': 'your_password',        # Your password
    'database': 'your_database',        # The database you want to connect to
    'port': 3306
}
# --- Configure SSL information ---
ssl_args = {
    'ca': '{CA certificate path}/ApsaraDB-CA-Chain.pem',
    'mode': 'VERIFY_CA'
}
try:
    # Establish a connection, passing ssl parameters
    print("Attempting to connect to MySQL with 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 for troubleshooting
    print(f"Connection failed: {e}")
finally:
    if 'connection' in locals() and connection.open:
        connection.close()
        print("Database connection closed.")

Benchmarking com Sysbench

  1. Download the certificate e descompacte o pacote.

  2. Configure o Sysbench:

    1. Adicione --mysql-ssl=on ao comando sysbench.

    2. Se estiver usando o Sysbench 1.0.x, renomeie o arquivo .pem para cacert.pem e coloque-o no diretório onde você executa o comando sysbench. Esta versão do Sysbench define rigidamente o nome do certificado SSL como cacert.pem.

    3. Para usuários do Sysbench 1.1.x, a configuração do certificado SSL pode seguir o mesmo procedimento do Sysbench 1.0.x. Alternativamente, especifique o caminho para o arquivo PEM usando o parâmetro --mysql-ssl-ca.

  3. Para métodos de benchmarking, consulte Performance testing method (OLTP).

    Nota

    Durante o benchmarking, certifique-se de que a versão do seu MySQL Client corresponda à versão do MySQL do seu cluster PolarDB.

Etapa 4: Verificar conexão criptografada

O protocolo SSL possui múltiplas versões. O PolarDB atualmente suporta TLSv1.2 e posteriores. Durante o handshake SSL, o cliente e o servidor PolarDB negociam parâmetros de conexão, incluindo a versão TLS, conjunto de cifras e chave de sessão. Para obter uma lista detalhada de conjuntos de cifras, visite o site oficial do OpenSSL.

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

  2. Execute a seguinte consulta SQL:

    SHOW STATUS LIKE 'ssl_cipher';
    +---------------+---------------------------+
    | Variable_name | Value                     |
    +---------------+---------------------------+
    | Ssl_cipher    | DHE-RSA-AES256-GCM-SHA384 |
    +---------------+---------------------------+
  3. Analise o resultado:

    • 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 a configuração do seu cliente.

Manutenção e gerenciamento

Modificar o endpoint protegido

Para alterar o endpoint protegido por SSL, clique em Configure SSL na seção desse endpoint.

Importante

A modificação do endpoint protegido atualiza automaticamente o certificado SSL e reinicia o cluster. Realize esta operação fora dos horários de pico.

Atualizar o período de validade do certificado

Se você alterar o endpoint SSL ou se o certificado estiver prestes a expirar, será necessário atualizar manualmente o período de validade do certificado.

Importante

A atualização do período de validade do certificado reinicia o cluster. Planeje esse tempo de inatividade adequadamente.

  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, download e configure o novo certificado.

Nota

Não é possível prorrogar o período de validade de um certificado SSL. Você só pode atualizar o período de validade e, em seguida, baixar e configurar novamente o certificado. Para evitar a atualização manual do certificado sempre que ele se aproximar do vencimento, recomendamos ativar a rotação automática de certificados. Para mais informações, consulte Enable automatic certificate rotation.

Ativar rotação automática de certificados

Ao ativar a rotação automática de certificados, o PolarDB renova automaticamente o certificado durante a janela de manutenção do cluster, dentro de 10 dias antes do vencimento.

Importante

A renovação automática de certificados reinicia o cluster. Recomendamos realizar esta operação fora dos horários 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. Recomendamos realizar esta operação fora dos horários de pico.

  1. Na aba SSL Settings, desative a chave SSL Status para desabilitar 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.