Mise à jour des applications pour se connecter aux clusters de bases de données Aurora MySQL à l'aide des nouveaux certificats TLS - Amazon Aurora

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.

Mise à jour des applications pour se connecter aux clusters de bases de données Aurora MySQL à l'aide des nouveaux certificats TLS

Le 13 janvier 2023, Amazon RDS a publié de nouveaux certificats d'autorité de certification (CA) pour une connexion à vos clusters de bases de données Aurora à l'aide du protocole TLS (Transport Layer Security). Vous trouverez ci-après des informations sur la mise à jour de vos applications afin d'utiliser les nouveaux certificats.

Cette rubrique peut vous aider à déterminer si des applications clientes utilisent le protocole TLS pour se connecter à vos clusters de bases de données. Si tel est le cas, il vous est alors possible de vérifier si ces applications nécessitent une vérification du certificat pour se connecter.

Note

Certaines applications sont configurées pour ne se connecter aux clusters de bases de données Aurora MySQL que si la vérification du certificat sur le serveur s'effectue avec succès.

Pour ces applications, vous devez mettre à jour les magasins d'approbations des applications clientes afin d'inclure les nouveaux certificats de l'autorité de certification.

Une fois que vous avez mis à jour les certificats de l'autorité de certification dans les magasins d'approbations des applications clientes, vous pouvez soumettre les certificats de vos clusters de bases de données à une rotation. Nous vous recommandons vivement de tester ces procédures dans un environnement de développement ou intermédiaire avant de les implémenter dans vos environnements de production.

Pour de plus amples informations sur la rotation de certificats, veuillez consulter Rotation de votre SSL TLS certificat/. Pour en savoir plus sur le téléchargement de certificats, consultez Utilisation TLS deSSL/pour chiffrer une connexion à une de clusters. Pour obtenir des informations sur l'utilisation du protocole TLS avec les clusters de bases de données Aurora MySQL, consultez TLSconnexions aux clusters Aurora My SQL DB.

Déterminer si des applications se connectent à votre cluster de bases de données Aurora MySQL via le protocole TLS

Si vous utilisez Aurora MySQL version 2 (compatible avec MySQL 5.7) et que le schéma de performance est activé, exécutez la requête suivante pour vérifier si les connexions utilisent le protocole TLS. Pour de plus amples informations sur l'activation du schéma de performance, veuillez consulter Performance Schema Quick Start dans la documentation MySQL.

mysql> SELECT id, user, host, connection_type FROM performance_schema.threads pst INNER JOIN information_schema.processlist isp ON pst.processlist_id = isp.id;

Dans cet exemple de sortie, vous pouvez voir que votre propre session (admin) et une application connectée sous le nom de webapp1 utilisent toutes deux le protocole TLS.

+----+-----------------+------------------+-----------------+ | id | user | host | connection_type | +----+-----------------+------------------+-----------------+ | 8 | admin | 10.0.4.249:42590 | SSL/TLS | | 4 | event_scheduler | localhost | NULL | | 10 | webapp1 | 159.28.1.1:42189 | SSL/TLS | +----+-----------------+------------------+-----------------+ 3 rows in set (0.00 sec)

Contrôle de la nécessité d'une vérification du certificat du client pour qu'il puisse se connecter

Vous pouvez vérifier si les clients JDBC et les clients MySQL requièrent une vérification du certificat pour pouvoir se connecter.

JDBC

L'exemple suivant avec MySQL Connector/J 8.0 illustre une façon de vérifier les propriétés de connexion JDBC d'une application afin de déterminer si les connexions nécessitent un certificat valide pour réussir. Pour de plus amples informations sur l'ensemble des options de connexion JDBC pour MySQL, veuillez consulter Configuration Properties dans la documentation MySQL.

Lorsque vous utilisez MySQL Connector/J 8.0, une connexion TLS nécessite la vérification du certificat de l'autorité de certification sur le serveur si vos propriétés de connexion ont sslMode défini sur VERIFY_CA ou VERIFY_IDENTITY, comme illustré dans l'exemple suivant.

Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD);
Note

Si vous utilisez MySQL Java Connector v5.1.38 ou version ultérieure, ou MySQL Java Connector v8.0.9 ou version ultérieure, pour vous connecter à vos bases de données, même si vous n'avez pas explicitement configuré vos applications de manière à utiliser TLS lors de la connexion à vos bases de données, ces pilotes clients utilisent par défaut TLS. En outre, lors de l'utilisation de TLS, ils effectuent une vérification partielle du certificat et ne parviennent pas à se connecter si le certificat du serveur de base de données a expiré.

MySQL

Les exemples suivants avec le client MySQL montrent deux façons de vérifier la connexion MySQL d'un script pour déterminer si les connexions nécessitent un certificat valide pour réussir. Pour de plus amples informations sur l'ensemble des options de connexion avec le client MySQL, veuillez consulter Client-Side Configuration for Encrypted Connections dans la documentation MySQL.

Lorsque vous utilisez le client MySQL 5.7 ou MySQL 8.0, une connexion TLS nécessite la vérification du certificat de l'autorité de certification sur le serveur si, pour l'option --ssl-mode, vous spécifiez VERIFY_CA ou VERIFY_IDENTITY, comme dans l'exemple suivant.

mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-mode=VERIFY_CA

Lorsque vous utilisez le client MySQL 5.6, une connexion SSL nécessite la vérification du certificat de l'autorité de certification sur le serveur si vous spécifiez l'option --ssl-verify-server-cert, comme illustré dans l'exemple suivant.

mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-verify-server-cert

Mise à jour du magasin d'approbations de votre application

Pour de plus amples informations sur la mise à jour du magasin d'approbations des applications MySQL, veuillez consulter Installing SSL Certificates dans la documentation MySQL.

Note

Lors de la mise à jour du magasin d'approbations, vous pouvez conserver les certificats plus anciens en complément de l'ajout des nouveaux certificats.

Mise à jour du magasin d'approbations de votre application pour JDBC

Vous pouvez mettre à jour le magasin d'approbations pour les applications qui utilisent JDBC dans le cadre des connexions TLS.

Pour plus d'informations sur le téléchargement du certificat racine, consultez Utilisation TLS deSSL/pour chiffrer une connexion à une de clusters.

Pour obtenir des exemples de scripts qui importent des certificats, consultez Exemple de script pour importer les certificats dans votre magasin d'approbations.

Si vous utilisez le pilote JDBC mysql dans une application, définissez les propriétés suivantes dans l'application.

System.setProperty("javax.net.ssl.trustStore", certs); System.setProperty("javax.net.ssl.trustStorePassword", "password");
Note

Spécifiez un mot de passe autre que celui indiqué ici, en tant que bonne pratique de sécurité.

Lorsque vous démarrez l'application, définissez les propriétés suivantes.

java -Djavax.net.ssl.trustStore=/path_to_truststore/MyTruststore.jks -Djavax.net.ssl.trustStorePassword=my_truststore_password com.companyName.MyApplication

Exemple de code Java pour l'établissement de connexions TLS

L'exemple de code suivant montre comment configurer la connexion SSL qui valide le certificat sur le serveur à l'aide de JDBC.

public class MySQLSSLTest { private static final String DB_USER = "user name"; private static final String DB_PASSWORD = "password"; // This key store has only the prod root ca. private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore"; private static final String KEY_STORE_PASS = "keystore-password"; public static void test(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); System.setProperty("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH); System.setProperty("javax.net.ssl.trustStorePassword", KEY_STORE_PASS); Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); Connection connection = DriverManager.getConnection("jdbc:mysql://jagdeeps-ssl-test.cni62e2e7kwh.us-east-1.rds.amazonaws.com:3306",properties); Statement stmt=connection.createStatement(); ResultSet rs=stmt.executeQuery("SELECT 1 from dual"); return; } }
Important

Une fois que vous avez déterminé que vos connexions à la base de données utilisent le protocole TLS et que vous avez mis à jour le magasin de confiance des applications, vous pouvez mettre à jour votre base de données pour utiliser les certificats rds-ca-rsa 2048-g1. Pour obtenir des instructions, veuillez consulter l'étape 3 dans Mettre à jour votre certificat CA en modifiant votre instance de base de données.