Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Configure the SSL encryption feature

Última atualização: Jul 10, 2026

A criptografia SSL protege dados em trânsito entre instâncias do ApsaraDB RDS for MySQL e clientes, evitando monitoramento, interceptação e adulteração. Por padrão, o SSL está desativado nas instâncias RDS MySQL.

Os certificados cloud permitem:

  • Ativar a criptografia SSL (e, opcionalmente, forçar todas as conexões a usar SSL)

  • Baixar o certificado CA

  • Configurar clientes — CLI, MySQL Workbench, DMS, Java e Python — para conexão via SSL

Pré-requisitos

Antes de começar, verifique se:

  • Sua instância RDS executa uma das seguintes versões e edições do MySQL para usar a SSL encryption:

    Versão do MySQL

    RDS High-availability Edition

    RDS Cluster Edition

    RDS Basic Edition

    8,0

    Suportado

    Suportado

    Suportado

    5,7

    Suportado

    Suportado

    Suportado

    5.6

    Suportado

  • Sua instância RDS atende aos dois requisitos a seguir para usar a forceful SSL encryption:

    • Executa MySQL 5,7 ou 8,0 na Basic Edition, High-availability Edition ou Cluster Edition

    • Executa uma versão secundária do mecanismo 20241130 ou posterior

Verifique esses detalhes na página Basic Information da sua instância RDS. Se a instância atender aos requisitos, mas a aba SSL não estiver visível, atualize a versão secundária do mecanismo. Para mais detalhes, consulte Atualizar a versão secundária do mecanismo . Caso você altere o método de faturamento de uma instância RDS não serverless da Basic Edition para serverless, será necessário reativar a criptografia SSL.

Impactos potenciais

Comportamento de reinicialização e failover:

Operação

MySQL 5.6 ou 5.7

MySQL 8.0

Ativar SSL

Reinicia; aciona failover primário/secundário

Reinicia; aciona failover primário/secundário

Desativar SSL

Reinicia; aciona failover primário/secundário

Reinicia; aciona failover primário/secundário

Atualizar certificado

Reinicia

Não reinicia

Execute essas operações fora do horário de pico e configure sua aplicação para reconectar automaticamente após a reinicialização.

Sobrecarga de CPU: Conexões com criptografia SSL aumentam significativamente a utilização da CPU. Ative o SSL apenas para endpoints que exigem criptografia — geralmente o endpoint público.

SSL forçado: Após ativar a criptografia SSL forçada, conexões sem SSL provenientes de clientes e proxies de banco de dados serão recusadas.

Como funciona

Ao ativar a criptografia SSL, a instância RDS gera um certificado de servidor, uma chave pública e uma chave privada.

Durante o handshake SSL:

  1. A instância RDS envia o certificado do servidor (incluindo a chave pública) ao cliente.

  2. O cliente criptografa uma chave simétrica usando a chave pública recebida.

  3. A instância RDS descriptografa a chave simétrica usando sua chave privada.

  4. Ambas as partes usam a chave simétrica para criptografar e descriptografar dados.

O cliente também pode validar o certificado do servidor com base em um certificado CA para confirmar a identidade do servidor e evitar ataques man-in-the-middle.

Suporte a versões TLS

Versão do MySQL

TLSv1.0

TLSv1.1

TLSv1.2

TLSv1.3

8,0

Suportado

Suportado

Suportado

Suportado (versão secundária 20221231 ou posterior)

5,7

Suportado

Suportado

Suportado

Não suportado

5.6

Suportado

Suportado

Suportado

Não suportado

O TLS 1.0 e o TLS 1.1 foram descontinuados pela Internet Engineering Task Force (IETF) em 2021. Utilize TLSv1.2 ou superior. Para mais detalhes, consulte RFC 8996 .

Configuração ssl_cipher

O ApsaraDB RDS for MySQL utiliza OpenSSL para TLS. O OpenSSL foi atualizado para a versão 3,0 nas seguintes instâncias:

  • Instâncias MySQL 5,7 com versão secundária do mecanismo 20230831

  • Instâncias MySQL 8,0 com versão secundária do mecanismo 20230930

O OpenSSL 3,0 não suporta mais TLSv1.0 e TLSv1.1 por padrão. Para manter a compatibilidade, o parâmetro ssl_cipher tem como valor padrão "ALL:@SECLEVEL=0", que reativa o suporte a TLSv1.0 e TLSv1.1.

Se suas cargas de trabalho utilizarem exclusivamente TLSv1.2 ou superior, defina ssl_cipher como uma string vazia ("") no console do ApsaraDB RDS para garantir maior segurança.

Tipos de certificado

Ambos os tipos de certificado protegem um único endpoint e têm a mesma finalidade: ativar a criptografia SSL e permitir que o cliente autentique o servidor.

Certificado cloud

Certificado personalizado

Emitido por

Alibaba Cloud

Uma CA ou autoassinado

Período de validade

365 dias

Personalizado

Endpoints protegidos

1

1

Para certificados personalizados, consulte Configurar um certificado personalizado.

Etapa 1: Ativar a criptografia SSL

  1. Acesse a página Instances. Na barra de navegação superior, selecione a região onde reside sua instância RDS. Localize a instância e clique em seu ID.

  2. No painel de navegação à esquerda, clique em Data Security.

  3. Na aba SSL, ative o interruptor ao lado de Disabled.

    Se a aba SSL não aparecer, verifique se sua instância atende a todos os requisitos listados nos Pré-requisitos .
  4. Na caixa de diálogo exibida, selecione o endpoint a ser protegido — interno ou público — e clique em OK. Apenas um endpoint pode ser protegido por vez.

  5. (Opcional) Ative a Forceful Encryption.

    Importante
    • A criptografia SSL forçada requer MySQL 5,7 ou 8,0 e uma versão secundária do mecanismo 20241130 ou posterior. - Após ativar a criptografia SSL forçada, apenas conexões criptografadas via SSL serão aceitas. Conexões sem SSL de clientes e proxies de banco de dados serão recusadas.

  6. Aguarde aproximadamente 1 minuto para a conclusão do processo. Atualize a página para confirmar que o recurso está ativado.

Etapa 2: Baixar o certificado CA

  1. Acesse a página Instances, localize sua instância e clique em seu ID.

  2. No painel de navegação à esquerda, clique em Data Security. Na aba SSL, clique em Download CA Certificate.

O pacote baixado contém três arquivos:

Arquivo

Formato

Quando usar

ApsaraDB-CA-Chain.pem

PEM

Maioria dos cenários

ApsaraDB-CA-Chain.jks

JKS (Java KeyStore)

Aplicações Java; a senha é apsaradb

ApsaraDB-CA-Chain.p7b

P7B (PKCS#7)

Aplicações Windows que exigem formato PKCS#7

Etapa 3: Conectar usando SSL

Configure seu cliente para conexão via SSL. Os modos disponíveis são:

Modo

Comportamento

DISABLED

As conexões não são criptografadas

PREFERRED (padrão)

Tenta uma conexão criptografada; reverte para não criptografada se o SSL estiver indisponível

REQUIRED

Exige conexão criptografada; falha se a criptografia estiver indisponível

VERIFY_CA

Exige criptografia e valida o certificado do servidor com base no certificado CA

VERIFY_IDENTITY

Exige criptografia, valida o certificado do servidor e verifica se o hostname do certificado corresponde à conexão real

Importante

Se a criptografia SSL forçada estiver ativada, apenas os modos REQUIRED, VERIFY_CA ou VERIFY_IDENTITY permitem conexões.

CLI

Para clientes MySQL 5.7.11 ou posteriores, utilize a opção --ssl-mode.

Conectar sem validar o certificado do servidor:

mysql -h <endpoint> -u <username> -p --ssl-mode=PREFERRED

Conectar e validar o certificado do servidor:

mysql -h <endpoint> -u <username> -p \
  --ssl-mode=VERIFY_CA \
  --ssl-ca=<path-to-certificate>/ApsaraDB-CA-Chain.pem

Substitua <endpoint>, <username> e <path-to-certificate> pelos seus valores reais.

Para clientes MySQL anteriores à versão 5.7.11 e clientes MariaDB, utilize --ssl e --ssl-verify-server-cert . Consulte a documentação oficial do MySQL e do MariaDB para mais detalhes.

MySQL Workbench

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

  2. Insira o endpoint de conexão, nome de usuário e senha.

  3. Na aba SSL, defina Use SSL para o modo desejado. Defina SSL CA File com o caminho do arquivo PEM baixado e clique em Test Connection ou OK.

DMS

Ao registrar sua instância RDS no Data Management (DMS), configure o parâmetro Enable SSL. Para mais detalhes, consulte Registrar uma instância de banco de dados Alibaba Cloud.

Para atualizar a configuração de um registro existente, clique com o botão direito na instância, selecione Edit e configure Enable SSL em Advanced Information.

Código da aplicação

Java

O MySQL Connector/J (mysql-connector-java) é o driver JDBC oficial para MySQL. Este exemplo utiliza a versão 8.0.19.

Adicione a seguinte dependência:

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

A propriedade sslMode é suportada a partir do mysql-connector-java 8.0.13. Para versões anteriores, utilize as propriedades useSSL, requireSSL e verifyServerCertificate. Consulte a documentação do MySQL Connector/J.

package com.aliyun.sample;

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

public class Sample {

    public static void main(String[] args) {

        Connection conn = null;
        MysqlDataSource mysqlDS = null;

        try {
            mysqlDS = new MysqlDataSource();

            // Set the SSL mode. Options: DISABLED, PREFERRED, REQUIRED, VERIFY_CA, VERIFY_IDENTITY.
            mysqlDS.setSslMode("VERIFY_IDENTITY");

            // The truststore holds the CA certificate. This example uses JKS format.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Replace with the actual path to ApsaraDB-CA-Chain.jks on your system.
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            // The JKS file password is always apsaradb.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");

            // Replace the following values with your actual RDS instance details.
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com"); // RDS endpoint
            mysqlDS.setPort(3306);
            mysqlDS.setUser("xxxxxx");          // Database account username
            mysqlDS.setPassword("xxxxxx");      // Database account password
            mysqlDS.setDatabaseName("xxxxxx");  // Database name

            conn = mysqlDS.getConnection();

        } 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

try:
    ssl_config = {
        "ca": "/path/to/ApsaraDB-CA-Chain.pem",  # Path to the CA certificate
        "mode": "VERIFY_CA"                        # SSL mode
    }
    conn = pymysql.connect(
        host="******.mysql.rds.aliyuncs.com",
        user="*****",
        passwd="******",
        db="*****",
        ssl=ssl_config
    )
    cursor = conn.cursor()
    cursor.execute("SELECT VERSION()")
    data = cursor.fetchone()
    print("Database version:", data[0])
    cursor.close()
except pymysql.Error as e:
    print(e)

Operações adicionais

Atualizar um certificado cloud

Os certificados cloud têm validade de um ano. Se um certificado expirar antes da renovação, clientes que utilizam conexões criptografadas não conseguirão se conectar. O Alibaba Cloud envia notificações de expiração por e-mail ou mensagem interna.

Para agendar a renovação automática, utilize a caixa de diálogo Schedule Event. Para mais detalhes, consulte Gerenciar eventos agendados.

Após a renovação automática, os clientes não precisam baixar ou reconfigurar o certificado CA.

Para renovar o certificado manualmente:

Importante

A atualização do certificado reinicia instâncias executando MySQL 5.6 ou 5,7. Instâncias executando MySQL 8,0 não são reiniciadas.

  1. Acesse a página Instances, localize sua instância e clique em seu ID.

  2. No painel de navegação à esquerda, clique em Data Security.

  3. Na aba SSL, clique em Update Expiration Time.

Verificar a conexão criptografada

Inspecione a conexão atual com estas instruções SQL:

-- Check the cipher suite used by the current session.
-- A non-empty result confirms the connection is encrypted.
SHOW STATUS LIKE 'Ssl_cipher';

-- Check the TLS version used by the current session.
SHOW STATUS LIKE 'Ssl_version';

Na CLI do MySQL, execute \s para visualizar os detalhes da conexão. Se a conexão estiver criptografada, o campo SSL exibirá o conjunto de cifras em uso.

Exigir SSL para um usuário específico

ALTER USER 'testuser'@'%' REQUIRE SSL;

Visualizar o conteúdo do certificado CA

openssl x509 -in <path-to-certificate>/ApsaraDB-CA-Chain.pem -text

Desativar a criptografia SSL

Importante

Desativar o SSL reinicia a instância RDS e aciona um failover primário/secundário. Execute esta operação fora do horário de pico.

  1. Acesse a página Instances, localize sua instância e clique em seu ID.

  2. No painel de navegação à esquerda, clique em Data Security.

  3. Na aba SSL, desative a SSL Encryption. Na caixa de diálogo de confirmação, clique em OK.

Perguntas frequentes

Posso configurar autenticação mútua que valide tanto a identidade do servidor quanto a do cliente?

O ApsaraDB RDS for MySQL não suporta verificação de identidade do cliente durante o handshake SSL. Utilize listas de permissões e gerenciamento de contas para controlar o acesso.

Como configuro a criptografia SSL para um endpoint de divisão de leitura/escrita?

Consulte Configurar criptografia SSL para um endpoint de proxy de banco de dados.

Aplicação Java: javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints

Este erro ocorre com as configurações de segurança padrão do JDK 7 ou JDK 8. No arquivo jre/lib/security/java.security do host da sua aplicação, defina:

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

Aplicação Java: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

O MySQL Connector/J 8.0.18 e versões anteriores desativam o TLSv1.2 ao conectar-se a instâncias MySQL 5.6 ou 5,7. Resolva isso usando uma das opções abaixo:

  • Atualize o MySQL Connector/J para a versão 8.0.19 ou posterior

  • Atualize a instância RDS para MySQL 8,0

  • Especifique explicitamente a versão TLS definindo enabledTLSProtocols ou tlsVersions como TLSv1.2 na configuração de conexão

Referência de API