Todos los productos
Search
Centro de documentos

PolarDB:Configure SSL encryption

Última actualización: Sep 05, 2026

Para mejorar la seguridad de los datos en tránsito, habilite el cifrado Secure Sockets Layer (SSL) e instale un certificado de CA en sus servicios de aplicación. SSL cifra las conexiones de red en la capa de transporte para mejorar la seguridad y la integridad de los datos, aunque esto puede aumentar la latencia de conexión.

Contexto

SSL es un protocolo de seguridad que Netscape desarrolló originalmente para crear un canal seguro de transmisión de datos entre un navegador web y un servidor web. Utiliza algoritmos de cifrado como RC4, MD5 y RSA para proteger las comunicaciones. Internet Engineering Task Force (IETF) estandarizó SSL 3.0 y lo renombró como Transport Layer Security (TLS). Aunque SSL es el término más común, este documento se refiere al cifrado TLS cuando habla del cifrado SSL.

Escenarios

  • Acceso a una base de datos a través de internet público: Cuando un cliente se conecta a un clúster de PolarDB por internet público, el enlace de datos queda expuesto a una red no confiable. El cifrado es necesario para evitar ataques de intermediario (man-in-the-middle).

  • Cumplimiento de requisitos de seguridad y normativos: Ciertas regulaciones de la industria o de protección de datos, como PCI-DSS y GDPR, exigen cifrar los datos confidenciales en tránsito.

  • Comunicación entre distintos entornos de red: En una arquitectura de nube híbrida o con varias VPC, los flujos de datos que cruzan límites de red requieren cifrado SSL para garantizar su confidencialidad e integridad.

Límites

  • Cifrado de un solo endpoint: Cada clúster admite cifrado SSL únicamente para un endpoint a la vez. Si su clúster tiene configurados un endpoint público y uno interno, debe elegir cuál cifrar según su escenario de negocio.

  • Recomendaciones para elegir el endpoint que se va a cifrar:

    • Si accede a la base de datos por internet público, se recomienda habilitar el cifrado SSL en el endpoint público para proteger los datos en tránsito.

    • Si accede a la base de datos solo desde dentro de una VPC y necesita cumplir requisitos de seguridad y normativos, se recomienda habilitar el cifrado SSL en el endpoint interno.

  • Límite de longitud del endpoint: Un endpoint de PolarDB con cifrado SSL habilitado debe tener menos de 64 caracteres. Para obtener información sobre cómo modificar un endpoint, consulte Configure PolarProxy.

Importante

Procedimiento

Paso 1: Habilitar el cifrado SSL

Importante

Habilitar el cifrado SSL reinicia el clúster. Se recomienda ejecutar esta operación fuera del horario de mayor actividad.

  1. Inicie sesión en la consola de PolarDB. En el panel de navegación izquierdo, haga clic en Clusters. Seleccione la región donde se encuentra su clúster y luego haga clic en el ID del clúster.

  2. En el panel de navegación izquierdo, elija Settings and Management > Security.

  3. En la pestaña SSL Settings, active el interruptor SSL Status para habilitar el cifrado SSL.

    Nota

    Se puede configurar SSL para endpoints primarios, de clúster y personalizados.

  4. En el cuadro de diálogo Configure SSL, seleccione el endpoint que desea cifrar y luego haga clic en OK.

Paso 2: Descargar el certificado

Una vez habilitado el cifrado SSL, descargue el certificado del clúster de PolarDB para verificar la autenticidad de la base de datos cuando un cliente se conecte de forma remota al clúster de PolarDB.

  1. En la pestaña SSL Settings, haga clic en Download en la sección del endpoint deseado.

  2. El archivo descargado es un paquete comprimido que contiene los tres archivos siguientes:

    • Archivo .p7b: Para importar el certificado de CA en Windows.

    • Archivo .pem: Para importar el certificado de CA en otros sistemas o aplicaciones.

    • Archivo .jks: Archivo de certificado de almacén de confianza de Java, con la contraseña apsaradb, para importar la cadena de certificados de CA en aplicaciones Java.

      Nota

      Cuando utilice el archivo de certificado JKS en Java, debe modificar la configuración de seguridad predeterminada de JDK 7 y JDK 8. En el servidor que se conecta a la base de datos de PolarDB, edite el archivo jre/lib/security/java.security y modifique los dos parámetros siguientes:

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

      Si no modifica la configuración de seguridad de JDK, puede producirse un error similar al siguiente. Este y otros errores relacionados suelen deberse a una configuración de seguridad de Java incorrecta.

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

Paso 3: Conectarse a PolarDB desde un cliente

Después de habilitar el cifrado SSL, el hecho de que la conexión entre un cliente y el clúster de PolarDB esté cifrada depende del tipo y la configuración del cliente. Por ejemplo, algunos clientes usan conexiones cifradas de forma predeterminada. Modifique la configuración o el código del cliente para establecer una conexión cifrada y verificar la identidad del clúster de PolarDB.

Nota

Si utiliza Data Management (DMS) para iniciar sesión y gestionar clústeres de PolarDB, no es necesario cifrar la conexión.

CLI

Para clientes MySQL versión 5.7.11 y posteriores, use la opción --ssl-mode en el comando de conexión para configurar el cifrado SSL.

  • --ssl-mode=DISABLED: La conexión no está cifrada.

  • --ssl-mode=PREFERRED u omitir la opción --ssl-mode: Intenta establecer una conexión cifrada. Si falla, establece una conexión sin cifrar.

  • --ssl-mode=REQUIRED: Exige una conexión cifrada. La conexión falla si no se logra establecer una cifrada.

  • --ssl-mode=VERIFY_CA: Exige una conexión cifrada y verifica el certificado del servidor con el certificado de CA local.

  • --ssl-mode=VERIFY_IDENTITY: Exige una conexión cifrada, verifica el certificado del servidor con el certificado de CA local y comprueba que el nombre de host o la dirección IP del servidor coincida con el utilizado para la conexión.

Ejemplo 1: Intentar establecer una conexión cifrada y recurrir a una sin cifrar si falla.

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

Ejemplo 2: Exigir una conexión cifrada y verificar el certificado del servidor.

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={CA certificate path}/ApsaraDB-CA-Chain.pem
Nota
  • Reemplace {endpoint}, {username} y {CA certificate path} con sus valores reales.

  • Para obtener más información sobre la opción --ssl-mode, consulte la documentación de MySQL.

MySQL Workbench

  1. Abra MySQL Workbench y seleccione Database > Manage Connections.

  2. Introduzca el endpoint, el nombre de usuario y la contraseña de PolarDB.

  3. En la pestaña SSL, establezca el parámetro Use SSL, configure SSL CA File con la ruta del certificado de CA en formato PEM que descargó y luego haga clic en Test Connection o OK.

    Nota

    Para conocer el significado de las opciones de Use SSL, consulte la descripción de la opción --ssl-mode para conexiones por línea de comandos.

Código de aplicación

Java

Connector/J (mysql-connector-java) es el controlador JDBC oficial para MySQL. Este ejemplo usa mysql-connector-java versión 8.0.19 como dependencia.

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

El siguiente código de ejemplo usa la propiedad sslMode para especificar el modo SSL. Esta propiedad es compatible con las versiones 8.0.13 y posteriores de mysql-connector-java. Si utiliza una versión anterior, debe usar las propiedades useSSL, requireSSL y verifyServerCertificate. Para más detalles, consulte la documentación de MySQL.

Código de ejemplo:

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.")

Pruebas de rendimiento con Sysbench

  1. Download the certificate y descomprima el paquete.

  2. Configure Sysbench:

    1. Agregue --mysql-ssl=on al comando sysbench.

    2. Si utiliza Sysbench 1.0.x, cambie el nombre del archivo .pem a cacert.pem y colóquelo en el directorio donde ejecuta el comando sysbench. Esta versión de Sysbench define el nombre del certificado SSL de forma fija como cacert.pem.

    3. Si utiliza Sysbench 1.1.x, configure el certificado SSL igual que en Sysbench 1.0.x. Como alternativa, especifique la ruta del archivo PEM mediante el parámetro --mysql-ssl-ca.

  3. Para conocer los métodos de prueba de rendimiento, consulte Performance testing method (OLTP).

    Nota

    Durante las pruebas de rendimiento, asegúrese de que la versión de MySQL Client coincida con la versión de MySQL de su clúster de PolarDB.

Paso 4: Verificar la conexión cifrada

El protocolo SSL tiene varias versiones. Actualmente, PolarDB es compatible con TLSv1.2 y posteriores. Durante el handshake SSL, el cliente y el servidor de PolarDB negocian los parámetros de conexión, incluida la versión de TLS, el conjunto de cifrado y la clave de sesión. Para consultar la lista detallada de conjuntos de cifrado, visite el sitio web oficial de OpenSSL.

  1. Conéctese al clúster de PolarDB mediante un cliente configurado para SSL.

  2. Ejecute la siguiente consulta SQL:

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

    • Si la columna Value devuelve un valor no vacío, como DHE-RSA-AES256-GCM-SHA384, la conexión actual está cifrada.

    • Si la columna Value está vacía, la conexión actual no está cifrada. Revise la configuración de su cliente.

Mantenimiento y gestión

Modificar el endpoint protegido

Para cambiar el endpoint protegido por SSL, haga clic en Configure SSL en la sección de dicho endpoint.

Importante

Modificar el endpoint protegido actualiza automáticamente el certificado SSL y reinicia el clúster. Ejecute esta operación fuera del horario de mayor actividad.

Actualizar el periodo de validez del certificado

Si cambia el endpoint SSL o el certificado está a punto de caducar, debe actualizar manualmente el periodo de validez del certificado.

Importante

Actualizar el periodo de validez del certificado reinicia el clúster. Planifique este tiempo de inactividad en consecuencia.

  1. En la pestaña SSL Settings, haga clic en Update Validity Period.

  2. En el cuadro de diálogo que aparece, haga clic en OK.

  3. Una vez actualizado el periodo de validez, download y configure el nuevo certificado.

Nota

El periodo de validez de un certificado SSL no se puede extender. Solo es posible actualizar el periodo de validez y luego descargar y configurar de nuevo el certificado. Para evitar actualizar el certificado manualmente cada vez que se acerca su caducidad, se recomienda habilitar la rotación automática de certificados. Para obtener más información, consulte Enable automatic certificate rotation.

Habilitar la rotación automática de certificados

Si habilita la rotación automática de certificados, PolarDB renueva automáticamente el certificado durante la ventana de mantenimiento del clúster, dentro de los 10 días previos a su caducidad.

Importante

La renovación automática de certificados reinicia el clúster. Se recomienda ejecutar esta operación fuera del horario de mayor actividad.

  1. En la pestaña SSL Settings, haga clic en Advanced Settings.

  2. En el cuadro de diálogo Advanced Settings, habilite la rotación automática de certificados y haga clic en Confirm.

Deshabilitar el cifrado SSL

Importante

Deshabilitar el cifrado SSL reinicia el clúster. Se recomienda ejecutar esta operación fuera del horario de mayor actividad.

  1. En la pestaña SSL Settings, desactive el interruptor SSL Status para deshabilitar el cifrado SSL.

  2. En el cuadro de diálogo que aparece, haga clic en OK.

API relacionadas

API

Descripción

DescribeDBClusterSSL

Consulta la configuración SSL de un clúster de PolarDB.

ModifyDBClusterSSL

Habilita o deshabilita el cifrado SSL, o actualiza el certificado de CA de un clúster de PolarDB.