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 plus d’informations sur la rotation de certificats, consultez Rotation de votre SSL/TLS certificat. Pour en savoir plus sur le téléchargement de certificats, consultez . Pour plus d'informations sur l'utilisation SSL/TLS avec les instances de base de données MariaDB, consultez. Prise en charge de SSL/TLS pour les instances de base de données MariaDB sur Amazon RDS

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 montre une façon de vérifier les propriétés de connexion JDBC d'une application afin de déterminer si les connexions réussies nécessitent un certificat valide. Pour plus d’informations sur l’ensemble des options de connexion JDBC pour MySQL, consultez Configuration Properties dans la documentation MySQL.

Lorsque vous utilisez MySQL Connector/J 8.0, une connexion SSL doit être vérifiée par rapport au certificat CA du serveur si les propriétés de votre connexion sont sslMode définies sur VERIFY_CA ouVERIFY_IDENTITY, comme 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 le MySQL Java Connector v5.1.38 ou version ultérieure, ou le 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 pour vous connecter à vos bases de données, ces pilotes clients sont utilisés SSL/TLS par défautSSL/TLS. In addition, when using SSL/TLS, ils effectuent une vérification partielle du certificat et ne se connectent pas 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 plus d'informations sur la mise à jour du trust store pour les applications MySQL, consultez la section Utilisation TLS/SSL avec MariaDB Connector/J dans la documentation de 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 Connector/J MariaDB 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 SSL/TLS et que vous avez mis à jour votre magasin de confiance d'applications, vous pouvez mettre à jour votre base de données pour utiliser les certificats rds-ca-rsa 2048-g1. Pour obtenir des instructions, consultez l’étape 3 dans Mise à jour de votre certificat CA en modifiant votre instance de base de données ou votre cluster.

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