Mise à jour des applications pour se connecter aux instances MariaDB à l'aide de nouveaux certificats 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.

Mise à jour des applications pour se connecter aux instances MariaDB à l'aide de nouveaux certificats SSL/TLS

Le 13 janvier 2023, Amazon RDS a publié de nouveaux certificats d'autorité de certification (CA) pour la connexion à vos instances de base de données RDS à l'aide du protocole Secure Socket Layer ou Transport Layer Security (SSL/TLS). 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 vos applications nécessitent une vérification du certificat pour se connecter à vos instances de bases de données.

Note

Certaines applications sont configurées pour se connecter à MariaDB uniquement 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.

Vous pouvez spécifier les modes SSL suivants : disabled, preferred et required. Lorsque vous utilisez le mode preferred SSL et que le certificat de l'autorité de certification n'existe pas ou n'est pas à jour, la connexion n'utilise plus SSL et s'établit toujours avec succès.

Nous recommandons d'éviter le mode preferred. En mode preferred, si la connexion rencontre un certificat non valide, elle cesse d'utiliser le chiffrement et continue sans chiffrement.

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 instances 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 certificat SSL/TLS. Pour en savoir plus sur le téléchargement de certificats, consultez . Pour de plus amples informations sur l'utilisation des protocoles SSL/TLS avec les instances de bases de données MariaDB, veuillez consulter Utilisation de SSL/TLS avec une instance de base de données MariaDB.

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 SSL 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 SSL/TLS lors de la connexion à vos bases de données, ces pilotes clients utilisent par défaut SSL/TLS. En outre, lors de l'utilisation de SSL/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 est expiré.

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

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 MySQL 5.7 or MySQL 8.0, une connexion SSL 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 illustré 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 pour des applications MySQL, veuillez consulter Using TLS/SSL with MariaDB Connector/J dans la documentation MariaDB.

Pour plus d'informations sur le téléchargement du certificat racine, consultez .

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

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.

Si vous utilisez le pilote JDBC MariaDB Connector/J 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");

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
Note

Spécifiez des mots de passe autres que ceux indiqués ici, en tant que bonne pratique de sécurité.

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

L'exemple de code suivant montre comment configurer la connexion SSL à l'aide de JDBC.

private static final String DB_USER = "admin"; 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 main(String[] args) throws Exception { Class.forName("org.mariadb.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.put("user", DB_USER); properties.put("password", DB_PASSWORD); Connection connection = DriverManager.getConnection("jdbc:mysql://ssl-mariadb-public.cni62e2e7kwh.us-east-1.rds.amazonaws.com:3306?useSSL=true",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 SSL/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 rds-ca-rsa certificats 2048-g1. Pour obtenir des instructions, veuillez consulter l'étape 3 dans Mettre à jour votre certificat CA en modifiant votre instance ou cluster de base de données.

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