Chiffrement des connexions client aux instances de base de données MySQL avec SSL/TLS - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Chiffrement des connexions client aux instances de base de données MySQL avec SSL/TLS

Secure Sockets Layer (SSL) est un protocole de norme industrielle utilisé pour sécuriser les connexions réseau entre client et serveur. Après la version 3.0 de SSL, le nom du protocole est devenu Transport Layer Security (TLS). Amazon RDS prend en charge le chiffrement SSL/TLS pour les instances de base de données MySQL. En utilisant SSL/TLS, vous pouvez chiffrer une connexion entre votre client d'application et votre instance de base de données MySQL. Les protocoles SSL/TLS sont pris en charge dans toutes les Régions AWS pour MySQL.

Utilisation de SSL/TLS avec une instance de base de données MySQL

Amazon RDS crée un certificat SSL/TLS et l'installe sur l'instance de base de données quand Amazon RDS alloue l'instance. Ces certificats sont signés par une autorité de certification. Le certificat SSL/TLS inclut le point de terminaison de l'instance de base de données en tant que nom commun du certificat SSL/TLS pour assurer une protection contre les attaques par usurpation.

Un certificat SSL/TLS créé par Amazon RDS est l'entité racine approuvée et doit fonctionner dans la plupart des cas, mais il peut échouer si votre application n'accepte pas les chaînes de certificats. Si votre application ne les accepte pas, vous devrez peut-être utiliser un certificat intermédiaire pour vous connecter à votre Région AWS. Par exemple, vous devez utiliser un certificat intermédiaire pour vous connecter aux régions AWS GovCloud (US) à l'aide de SSL/TLS.

Pour plus d'informations sur le téléchargement de certificats, veuillez consulter . Pour en savoir plus sur l'utilisation de SSL/TLS avec MySQL, consultez Mise à jour des applications pour se connecter aux instances de bases de données MySQL à l'aide des nouveaux certificats SSL/TLS.

MySQL utilise OpenSSL pour les connexions sécurisées. Amazon RDS for MySQL prend pas en charge le protocole TLS (Transport Layer Security) versions 1.0, 1.1, 1.2 et 1.3. La prise en charge du protocole TLS dépend de la version de MySQL. Le tableau suivant affiche la prise en charge du protocole TLS pour les versions MySQL.

Version MySQL TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3

MySQL 8.0

Non pris en charge

Non pris en charge

Pris en charge

Pris en charge

MySQL 5.7

Pris en charge

Pris en charge

Pris en charge

Non pris en charge

Vous pouvez exiger des connexions SSL/TLS pour des comptes utilisateur spécifiques. Par exemple, vous pouvez utiliser l'une des instructions suivantes, selon votre version MySQL, pour exiger des connexions SSL/TLS sur le compte utilisateur encrypted_user.

Pour cela, utilisez l'instruction suivante.

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

Pour de plus amples informations sur les connexions SSL/TLS avec MySQL, veuillez consulter Using encrypted connections (Utilisation de connexions chiffrées) dans la documentation MySQL.

Exiger SSL/TLS pour toutes les connexions à une instance de base de données MySQL

Utilisez le paramètre require_secure_transport pour exiger que toutes les connexions des utilisateurs à votre instance de base de données MySQL utilisent SSL/TLS. Par défaut, le paramètre require_secure_transport est défini sur OFF. Vous pouvez définir le paramètre require_secure_transport sur ON pour exiger SSL/TLS pour les connexions à votre instance de base de données.

Vous pouvez définir la valeur du paramètre require_secure_transport en mettant à jour le groupe de paramètres de base de données pour votre instance de base de données. Vous n'avez pas besoin de redémarrer votre instance de base de données pour que la modification prenne effet.

Lorsque le paramètre require_secure_transport est défini sur ON pour une instance de base de données, un client de base de données peut s'y connecter s'il peut établir une connexion chiffrée. Sinon, un message d'erreur similaire au suivant est renvoyé au client :

MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

Pour plus d'informations sur la définition des paramètres, consultez Modification de paramètres dans un groupe de paramètres de bases de données.

Pour obtenir plus d'informations sur le paramètre require_secure_transport, consultez la documentation MySQL.

Connexion à partir du client de ligne de commande MySQL avec SSL/TLS (chiffrée)

Les paramètres du programme client mysql sont légèrement différents selon que vous utilisez la version MySQL 5.7, la version MySQL 8.0 ou la version MariaDB.

Pour savoir quelle version vous avez, exécutez la commande mysql avec l'option --version. Dans l'exemple suivant, la sortie indique que le programme client provient de MariaDB.

$ mysql --version mysql Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1

La plupart des distributions Linux, telles qu'Amazon Linux, CentOS, SUSE et Debian, ont remplacé MySQL par MariaDB, et la version de mysql qu'elles contiennent provient de MariaDB.

Pour vous connecter à votre instance de base de données en utilisant SSL/TLS, procédez comme suit :

Pour vous connecter à une instance de base de données avec SSL/TLS en utilisant le client de ligne de commande MySQL
  1. Téléchargez un certificat racine valide pour toutes les Régions AWS.

    Pour plus d'informations sur le téléchargement de certificats, veuillez consulter .

  2. Utilisez un client de ligne de commande MySQL pour vous connecter à une instance de base de données avec chiffrement SSL/TLS. Pour le paramètre -h, remplacez le nom DNS (point de terminaison) de votre instance de base de données. Pour le paramètre --ssl-ca, remplacez le nom de fichier du certificat SSL/TLS. Pour le paramètre -P, remplacez le port pour votre instance de base de données. Pour le paramètre -u, remplacez le nom d'utilisateur d'un utilisateur de base de données valide, par exemple l'utilisateur principal. Entrez le mot de passe de l'utilisateur principal quand vous y êtes invité.

    L'exemple suivant montre comment lancer le client à l'aide du paramètre --ssl-ca en utilisant le client MySQL 5.7 ou version ultérieure.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p

    Pour exiger que la connexion SSL/TLS vérifie le point de terminaison de l'instance de la base de données par rapport au point de terminaison du certificat SSL/TLS, entrez la commande suivante :

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=VERIFY_IDENTITY -P 3306 -u myadmin -p

    L'exemple suivant montre comment lancer le client à l'aide du paramètre --ssl-ca en utilisant le client MariaDB.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p
  3. Entrez le mot de passe de l'utilisateur principal quand vous y êtes invité.

Vous verrez des résultats similaires à ce qui suit.

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9738 Server version: 8.0.28 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>