Tous les produits
Search
Centre de documentation

PolarDB:Configurer le chiffrement SSL

Dernière mise à jour :Aug 27, 2026

Pour renforcer la sécurité des données en transit, activez le chiffrement Secure Sockets Layer (SSL) et installez un certificat d'autorité de certification (CA) sur vos services applicatifs. Le protocole SSL chiffre les connexions réseau au niveau de la couche transport afin d'améliorer la sécurité et l'intégrité des données, mais cela peut augmenter la latence des connexions.

Informations générales

SSL est un protocole de sécurité initialement développé par Netscape pour créer un canal sécurisé permettant la transmission de données entre un navigateur web et un serveur web. Il utilise des algorithmes de chiffrement tels que RC4, MD5 et RSA pour sécuriser les communications. L'Internet Engineering Task Force (IETF) a standardisé SSL 3.0 et l'a renommé Transport Layer Security (TLS). Bien que le terme SSL soit plus couramment utilisé, ce document fait référence au chiffrement TLS lorsqu'il aborde le chiffrement SSL.

Scénarios

  • Accès à une base de données via Internet public : Lorsqu'un client se connecte à un cluster PolarDB via Internet public, la liaison de données est exposée à un réseau non fiable. Le chiffrement est nécessaire pour prévenir les attaques de type « man-in-the-middle ».

  • Respect des exigences de sécurité et de conformité : Certaines réglementations sectorielles ou relatives à la protection des données, telles que PCI-DSS et GDPR, imposent le chiffrement des données sensibles en transit.

  • Communication entre environnements réseau : Dans une architecture de cloud hybride ou multi-VPC, les flux de données qui traversent les frontières réseau nécessitent un chiffrement SSL pour garantir leur confidentialité et leur intégrité.

Limites

  • Chiffrement à point de terminaison unique : Chaque cluster prend en charge le chiffrement SSL pour un seul point de terminaison à la fois. Si votre cluster est configuré avec un point de terminaison public et un point de terminaison interne, choisissez celui à chiffrer en fonction de votre scénario métier.

  • Recommandations pour le choix du point de terminaison à chiffrer :

    • Si vous accédez à la base de données via Internet public, nous vous recommandons d'activer le chiffrement SSL pour le point de terminaison public afin de protéger les données en transit.

    • Si vous accédez à la base de données uniquement depuis un VPC et devez respecter des exigences de sécurité et de conformité, nous vous recommandons d'activer le chiffrement SSL pour le point de terminaison interne.

  • Limite de longueur du point de terminaison : Un point de terminaison PolarDB avec le chiffrement SSL activé doit comporter moins de 64 caractères. Pour savoir comment modifier un point de terminaison, consultez la rubrique Configurer PolarProxy.

Important

Procédure

Étape 1 : Activer le chiffrement SSL

Important

L'activation du chiffrement SSL redémarre votre cluster. Nous vous recommandons d'effectuer cette opération pendant les heures creuses.

  1. Connectez-vous à la console PolarDB. Dans le volet de navigation de gauche, cliquez sur Clusters. Sélectionnez la région où se trouve votre cluster, puis cliquez sur l'ID du cluster.

  2. Dans le volet de navigation de gauche, choisissez Settings and Management > Security.

  3. Sous l'onglet SSL Settings, activez le commutateur SSL Status pour activer le chiffrement SSL.

    Remarque

    Vous pouvez configurer SSL pour les points de terminaison principaux, de cluster et personnalisés.

  4. Dans la boîte de dialogue Configure SSL, sélectionnez le point de terminaison à chiffrer, puis cliquez sur OK.

Étape 2 : Télécharger le certificat

Après avoir activé le chiffrement SSL, téléchargez le certificat du cluster PolarDB pour vérifier l'authenticité de la base de données lorsqu'un client se connecte à distance au cluster PolarDB.

  1. Sous l'onglet SSL Settings, cliquez sur Download dans la section correspondant au point de terminaison souhaité.

  2. Le fichier téléchargé est une archive compressée contenant les trois fichiers suivants :

    • Fichier .p7b : Pour importer le certificat CA sous Windows.

    • Fichier .pem : Pour importer le certificat CA sous d'autres systèmes ou applications.

    • Fichier .jks : Fichier de magasin de confiance Java, avec le mot de passe apsaradb, pour importer la chaîne de certificats CA dans les applications Java.

      Remarque

      Lors de l'utilisation du fichier de certificat JKS dans Java, vous devez modifier la configuration de sécurité par défaut pour JDK 7 et JDK 8. Sur le serveur qui se connecte à la base de données PolarDB, modifiez le fichier jre/lib/security/java.security et ajustez les deux paramètres suivants :

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

      Si vous ne modifiez pas les paramètres de sécurité JDK, une erreur similaire à la suivante peut se produire. Cette erreur et d'autres erreurs connexes sont généralement causées par des paramètres de sécurité Java incorrects.

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

Étape 3 : Se connecter à PolarDB depuis un client

Après avoir activé le chiffrement SSL, le fait qu'une connexion entre un client et le cluster PolarDB soit chiffrée dépend du type et des paramètres du client. Par exemple, certains clients peuvent utiliser des connexions chiffrées par défaut. Modifiez les paramètres ou le code du client pour établir une connexion chiffrée et vérifier l'identité du cluster PolarDB.

Remarque

Si vous utilisez Data Management (DMS) pour vous connecter et gérer les clusters PolarDB, vous n'avez pas besoin de chiffrer la connexion.

CLI

Pour les clients MySQL version 5.7.11 et ultérieures, utilisez l'option --ssl-mode dans la commande de connexion pour configurer le chiffrement SSL.

  • --ssl-mode=DISABLED : La connexion n'est pas chiffrée.

  • --ssl-mode=PREFERRED ou omission de l'option --ssl-mode : Tente d'établir une connexion chiffrée. En cas d'échec, établit une connexion non chiffrée.

  • --ssl-mode=REQUIRED : Exige une connexion chiffrée. La connexion échoue si une connexion chiffrée ne peut pas être établie.

  • --ssl-mode=VERIFY_CA : Exige une connexion chiffrée et vérifie le certificat du serveur par rapport au certificat CA local.

  • --ssl-mode=VERIFY_IDENTITY : Exige une connexion chiffrée, vérifie le certificat du serveur par rapport au certificat CA local et s'assure que le nom d'hôte ou l'adresse IP du serveur correspond à celui utilisé pour la connexion.

Exemple 1 : Tenter d'établir une connexion chiffrée, avec repli sur une connexion non chiffrée en cas d'échec.

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

Exemple 2 : Exiger une connexion chiffrée et vérifier le certificat du serveur.

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={CA certificate path}/ApsaraDB-CA-Chain.pem
Remarque
  • Remplacez {endpoint}, {username} et {CA certificate path} par vos valeurs réelles.

  • Pour plus d'informations sur l'option --ssl-mode, consultez la documentation MySQL.

MySQL Workbench

  1. Ouvrez MySQL Workbench et sélectionnez Database > Manage Connections.

  2. Saisissez le point de terminaison PolarDB, le nom d'utilisateur et le mot de passe.

  3. Sous l'onglet SSL, définissez le paramètre Use SSL, spécifiez le chemin du certificat CA au format PEM téléchargé dans le champ SSL CA File, puis cliquez sur Test Connection ou OK.

    Remarque

    Pour une explication des options Use SSL, consultez la description de l'option --ssl-mode pour les connexions en ligne de commande.

Code d'application

Java

Connector/J (mysql-connector-java) est le pilote JDBC officiel pour MySQL. Cet exemple utilise mysql-connector-java version 8.0.19 comme dépendance.

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

L'exemple de code suivant utilise la propriété sslMode pour spécifier le mode SSL. Cette propriété est prise en charge dans les versions mysql-connector-java 8.0.13 et ultérieures. Si vous utilisez une version antérieure, vous devez utiliser les propriétés useSSL, requireSSL et verifyServerCertificate à la place. Pour plus de détails, consultez la documentation MySQL.

Exemple de code :

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

Tests de performance Sysbench

  1. Téléchargez le certificat et décompressez l'archive.

  2. Configurez Sysbench :

    1. Ajoutez --mysql-ssl=on à la commande sysbench.

    2. Si vous utilisez Sysbench 1.0.x, renommez le fichier .pem en cacert.pem et placez-le dans le répertoire où vous exécutez la commande sysbench. Cette version de Sysbench code en dur le nom du certificat SSL sous la forme cacert.pem.

    3. Si vous utilisez Sysbench 1.1.x, vous pouvez configurer le certificat SSL comme pour Sysbench 1.0.x. Vous pouvez également spécifier le chemin du fichier PEM à l'aide du paramètre --mysql-ssl-ca.

  3. Pour les méthodes de test de performance, consultez la rubrique Méthode de test de performance (OLTP).

    Remarque

    Lors des tests de performance, assurez-vous que la version de votre client MySQL correspond à la version MySQL de votre cluster PolarDB.

Étape 4 : Vérifier la connexion chiffrée

Le protocole SSL existe en plusieurs versions. PolarDB prend actuellement en charge TLSv1.2 et les versions ultérieures. Lors de la négociation SSL, le client et le serveur PolarDB négocient les paramètres de connexion, y compris la version TLS, la suite de chiffrement et la clé de session. Pour obtenir la liste détaillée des suites de chiffrement, visitez le site officiel d'OpenSSL.

  1. Connectez-vous au cluster PolarDB à l'aide d'un client configuré pour SSL.

  2. Exécutez la requête SQL suivante :

    SHOW STATUS LIKE 'ssl_cipher';
    +---------------+---------------------------+
    | Variable_name | Value                     |
    +---------------+---------------------------+
    | Ssl_cipher    | DHE-RSA-AES256-GCM-SHA384 |
    +---------------+---------------------------+
  3. Analysez le résultat :

    • Si la colonne Value renvoie une valeur non vide, telle que DHE-RSA-AES256-GCM-SHA384, la connexion actuelle est chiffrée.

    • Si la colonne Value est vide, la connexion actuelle n'est pas chiffrée. Vérifiez la configuration de votre client.

Maintenance et gestion

Modifier le point de terminaison protégé

Pour changer le point de terminaison protégé par SSL, cliquez sur Configure SSL dans la section correspondant à ce point de terminaison.

Important

La modification du point de terminaison protégé met automatiquement à jour le certificat SSL et redémarre votre cluster. Effectuez cette opération pendant les heures creuses.

Mettre à jour la période de validité du certificat

Si vous modifiez le point de terminaison SSL ou si le certificat est sur le point d'expirer, vous devez mettre à jour manuellement la période de validité du certificat.

Important

La mise à jour de la période de validité du certificat redémarre le cluster. Planifiez cette interruption de service en conséquence.

  1. Sous l'onglet SSL Settings, cliquez sur Update Validity Period.

  2. Dans la boîte de dialogue qui s'affiche, cliquez sur OK.

  3. Une fois la période de validité mise à jour, téléchargez et configurez le nouveau certificat.

Remarque

La période de validité d'un certificat SSL ne peut pas être prolongée. Vous pouvez uniquement mettre à jour la période de validité, puis télécharger et configurer à nouveau le certificat. Pour éviter de mettre à jour manuellement le certificat chaque fois qu'il approche de sa date d'expiration, nous vous recommandons d'activer la rotation automatique des certificats. Pour plus d'informations, consultez la rubrique Activer la rotation automatique des certificats.

Activer la rotation automatique des certificats

Si vous activez la rotation automatique des certificats, PolarDB renouvelle automatiquement le certificat pendant la fenêtre de maintenance du cluster, dans les 10 jours précédant son expiration.

Important

Le renouvellement automatique du certificat redémarre le cluster. Nous vous recommandons d'effectuer cette opération pendant les heures creuses.

  1. Sous l'onglet SSL Settings, cliquez sur Advanced Settings.

  2. Dans la boîte de dialogue Advanced Settings, activez la rotation automatique des certificats et cliquez sur Confirm.

Désactiver le chiffrement SSL

Important

La désactivation du chiffrement SSL redémarre votre cluster. Nous vous recommandons d'effectuer cette opération pendant les heures creuses.

  1. Sous l'onglet SSL Settings, désactivez le commutateur SSL Status pour désactiver le chiffrement SSL.

  2. Dans la boîte de dialogue qui s'affiche, cliquez sur OK.

API associées

API

Description

DescribeDBClusterSSL

Interroge les paramètres SSL d'un cluster PolarDB.

ModifyDBClusterSSL

Active ou désactive le chiffrement SSL, ou met à jour le certificat CA pour un cluster PolarDB.