Mise à jour des applications pour se connecter aux instances My SQL DB à l'aide de nouveaux TLS certificatsSSL/ - 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 My SQL DB à l'aide de nouveaux TLS certificatsSSL/

Depuis le 13 janvier 2023, Amazon RDS a publié de nouveaux certificats d'autorité de certification (CA) pour la connexion à vos RDS instances de base de données à l'aide de Secure Socket Layer ou de 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 des applications clientes utilisentSSL/TLSpour se connecter à vos instances de base 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 se connecter aux instances My SQL DB uniquement si elles parviennent à vérifier le certificat sur le serveur. 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 SSL modes suivants : disabledpreferred, etrequired. Lorsque vous utilisez le preferred SSL mode et que le certificat CA n'existe pas ou n'est pas à jour, la connexion revient à ne pas être utilisée SSL et se connecte sans chiffrement.

Étant donné que ces versions ultérieures utilisent le SSL protocole Open, un certificat de serveur expiré n'empêche pas les connexions de réussir, sauf si le required SSL mode est spécifié.

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 TLS certificatSSL/. Pour en savoir plus sur le téléchargement de certificats, consultez . Pour plus d'informations sur l'utilisation deSSL/TLSavec les instances My SQL DB, consultezUtilisation de SSL/TLS avec une instance de base de données MySQL.

Déterminer si des applications se connectent à votre instance My SQL DB à l'aide de SSL

Si vous utilisez Amazon RDS for My SQL version 5.7 ou 8.0 et que le schéma de performance est activé, exécutez la requête suivante pour vérifier si les connexions utilisentSSL/TLS. Pour plus d'informations sur l'activation du schéma de performance, consultez la section Démarrage rapide du schéma de performance dans la section Ma SQL documentation.

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 à la fois votre propre session (admin) et une application connectée en cours webapp1 d'utilisationSSL.

+----+-----------------+------------------+-----------------+ | 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 JDBC clients et Mes SQL clients ont besoin d'une vérification de certificat pour se connecter.

JDBC

L'exemple suivant avec My SQL Connector/J 8.0 montre un moyen de vérifier les propriétés de JDBC connexion d'une application afin de déterminer si les connexions réussies nécessitent un certificat valide. Pour plus d'informations sur toutes les options de JDBC connexion pour MySQL, consultez la section Propriétés de configuration dans la SQL documentation My.

Lorsque vous utilisez My SQL Connector/J 8.0, une SSL connexion doit être vérifiée par rapport au certificat du serveur de base de données si vos propriétés de 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 My SQL Java Connector v5.1.38 ou version ultérieure, ou le My SQL 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 utiliserSSL/TLSlors de la connexion à vos bases de données, ces pilotes clients utilisent par défaut/. SSL TLS En outre, lorsqu'ils utilisentSSL/TLS, ils vérifient partiellement le certificat et ne parviennent pas à se connecter si le certificat du serveur de base de données est expiré.

Mon SQL

Les exemples suivants avec My SQL Client montrent deux manières de vérifier Ma SQL connexion d'un script afin de déterminer si les connexions réussies nécessitent un certificat valide. Pour plus d'informations sur toutes les options de connexion avec My SQL Client, consultez la section Configuration côté client pour les connexions chiffrées dans la documentation MySQL.

Lorsque vous utilisez le client My SQL 5.7 ou My SQL 8.0, une SSL connexion doit être vérifiée par rapport au certificat CA du serveur, s'il s'agit de l'--ssl-modeoption que vous spécifiez VERIFY_CA ouVERIFY_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 My SQL 5.6, une SSL connexion doit être vérifiée par rapport au certificat CA du serveur si vous spécifiez l'--ssl-verify-server-certoption, comme 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 Mes SQL applications, consultez la section Installation de SSL certificats dans la SQL documentation Ma.

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 JDBC pilote 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");

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

java -Djavax.net.ssl.trustStore=/path_to_trust_store/MyTruststore.jks -Djavax.net.ssl.trustStorePassword=my_trust_store_password com.companyName.MyApplication
Note

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

Exemple de code Java pour établir des SSL connexions

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

public class MySQLSSLTest { private static final String DB_USER = "username"; private static final String DB_PASSWORD = "password"; // This trust store has only the prod root ca. private static final String TRUST_STORE_FILE_PATH = "file-path-to-trust-store"; private static final String TRUST_STORE_PASS = "trust-store-password"; public static void test(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); System.setProperty("javax.net.ssl.trustStore", TRUST_STORE_FILE_PATH); System.setProperty("javax.net.ssl.trustStorePassword", TRUST_STORE_PASS); Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); Connection connection = null; Statement stmt = null; ResultSet rs = null; try { connection = DriverManager.getConnection("jdbc:mysql://mydatabase.123456789012.us-east-1.rds.amazonaws.com:3306",properties); stmt = connection.createStatement(); rs=stmt.executeQuery("SELECT 1 from dual"); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } return; } }
Important

Une fois que vous avez déterminé que vos connexions à la base de données utilisentSSL/TLSet 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 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é.