Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Aktualisieren von Anwendungen, um Verbindungen mit DB-Clustern von Aurora MySQL mithilfe neuer TLS-Zertifikate herzustellen
Am 13. Januar 2023 veröffentlichte Amazon RDS neue Zertifizierungsstellen-Zertifikate (Certificate Authority, CA) zum Herstellen von Verbindungen mit Ihren Aurora-DB-Clustern mithilfe von Transport Layer Security (TLS). Im Folgenden finden Sie Informationen dazu, wie Sie Ihre Anwendungen aktualisieren, um die neuen Zertifikate verwenden zu können.
In diesem Thema finden Sie Informationen dazu, wie Sie ermitteln, ob Client-Anwendungen für die Herstellung von Verbindungen mit Ihren DB-Clustern TLS verwenden. Wenn dies der Fall ist, können Sie weiter überprüfen, ob diese Anwendungen zur Herstellung von Verbindungen Zertifikatverifizierungen erfordern.
Anmerkung
Einige Anwendungen sind so konfiguriert, dass sie nur dann Verbindungen mit Aurora MySQL-DB-Clustern herstellen, wenn sie das Zertifikat auf dem Server erfolgreich identifizieren können.
Für solche Anwendungen müssen Sie die Trust Stores Ihrer Client-Anwendung aktualisieren, damit diese die neuen CA-Zertifikate enthalten.
Nach der Aktualisierung der CA-Zertifikate in den Trust Stores Ihrer Client-Anwendungen können Sie die Zertifikate auf Ihren DB-Clustern rotieren. Es wird nachdrücklich empfohlen, diese Verfahren vor der Implementierung in Produktionsumgebungen in einer Entwicklungs- oder Testumgebung zu testen.
Weitere Informationen zur Zertifikatrotation finden Sie unter Ihr SSL TLS /-Zertifikat rotieren. Weitere Informationen zum Herunterladen von Zertifikaten finden Sie unter Verwenden vonSSL/TLSzum Verschlüsseln einer Verbindung zu einer . Informationen zum Verwenden von TLS mit DB-Clustern von Aurora MySQL finden Sie unter TLSVerbindungen zu Aurora My SQL DB-Clustern.
Themen
- Ermitteln, ob Anwendungen Verbindungen mit Ihrem DB-Cluster von Aurora MySQL mithilfe von TLS herstellen
- Ermitteln, ob ein Client zum Herstellen von Verbindungen Zertifikatverifizierungen erfordert
- Aktualisieren des Trust Stores Ihrer Anwendung
- Java-Beispielcode für die Herstellung von TLS-Verbindungen
Ermitteln, ob Anwendungen Verbindungen mit Ihrem DB-Cluster von Aurora MySQL mithilfe von TLS herstellen
Wenn Sie Aurora MySQL Version 2 verwenden (kompatibel mit MySQL 5.7) und das Performance-Schema aktiviert ist, können Sie die folgende Abfrage ausführen, um zu prüfen, ob Verbindungen TLS verwenden. Informationen zum Aktivieren des Performance-Schemas finden Sie unter Performance Schema Quick Start
mysql> SELECT id, user, host, connection_type FROM performance_schema.threads pst INNER JOIN information_schema.processlist isp ON pst.processlist_id = isp.id;
In dieser Beispielausgabe können Sie sehen, dass sowohl Ihre eigene Sitzung (admin
), als auch eine als webapp1
angemeldete Anwendung TLS verwenden.
+----+-----------------+------------------+-----------------+ | 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)
Ermitteln, ob ein Client zum Herstellen von Verbindungen Zertifikatverifizierungen erfordert
Sie können überprüfen, ob JDBC-Clients und MySQL-Clients zum Herstellen von Verbindungen Zertifikatverifizierungen erfordern.
JDBC
Das folgende Beispiel mit MySQL Connector/J 8.0 zeigt eine Möglichkeit, wie Sie die JDBC-Verbindungseigenschaften einer Anwendung überprüfen können, um zu ermitteln, ob zum erfolgreichen Herstellen von Verbindungen ein gültiges Zertifikat benötigt wird. Weitere Informationen zu allen JDBC-Verbindungsoptionen für MySQL finden Sie unter Configuration Properties
Wenn MySQL Connector/J 8.0 verwendet wird, erfordert eine TLS-Verbindung die Verifizierung anhand des CA-Serverzertifikats, wenn in den Verbindungseigenschaften sslMode
auf VERIFY_CA
oder VERIFY_IDENTITY
festgelegt ist, wie im folgenden Beispiel gezeigt.
Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD);
Anmerkung
Wenn Sie entweder den MySQL Java Connector v5.1.38 oder höher oder den MySQL Java Connector v8.0.9 oder höher verwenden, um eine Verbindung mit Ihren Datenbanken herzustellen, verwenden diese Clienttreiber selbst dann standardmäßig TLS, wenn Sie Ihre Anwendungen nicht explizit zur Verwendung von TLS beim Verbinden mit Ihren Datenbanken konfiguriert haben. Darüber hinaus führen sie bei Verwendung von TLS eine teilweise Zertifikatüberprüfung durch und stellen keine Verbindung her, wenn das Datenbankserverzertifikat abgelaufen ist.
MySQL
Die folgenden Beispiele mit dem MySQL-Client zeigen zwei Möglichkeiten, wie Sie die MySQL-Verbindung eines Skripts überprüfen, um zu ermitteln, ob zum Herstellen von Verbindungen ein gültiges Zertifikat erforderlich ist. Weitere Informationen zu allen Verbindungsoptionen mit dem MySQL-Client finden Sie unter Client-Side Configuration for Encrypted Connections
Wenn der MySQL-5.7- oder MySQL-8.0-Client verwendet wird, erfordert eine TLS-Verbindung die Verifizierung anhand des CA-Serverzertifikats, wenn Sie für die Option --ssl-mode
den Wert VERIFY_CA
oder VERIFY_IDENTITY
angeben, wie im folgenden Beispiel gezeigt.
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/
ssl-cert.pem
--ssl-mode=VERIFY_CA
Wenn der MySQL 5.6-Client verwendet wird, erfordert eine SSL-Verbindung die Verifizierung anhand des CA-Serverzertifikats, wenn Sie die Option --ssl-verify-server-cert
angeben wie im folgenden Beispiel gezeigt.
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/
ssl-cert.pem
--ssl-verify-server-cert
Aktualisieren des Trust Stores Ihrer Anwendung
Informationen zum Aktualisieren des Trust Stores für MySQL-Anwendungen finden Sie unter Installing SSL Certificates
Anmerkung
Wenn Sie den Trust Store aktualisieren, können Sie ältere Zertifikate beibehalten und die neuen Zertifikate einfach hinzufügen.
Aktualisieren des Trust Stores Ihrer Anwendung für JDBC
Sie können den Trust Store für Anwendungen aktualisieren, die JDBC für TLS-Verbindungen verwenden.
Informationen zum Herunterladen des Stammverzeichnisses finden Sie unter Verwenden vonSSL/TLSzum Verschlüsseln einer Verbindung zu einer .
Beispiele für Skripte, die Zertifikate importieren, finden Sie unter Beispielskript für den Import von Zertifikaten in Ihren Trust Store.
Wenn Sie den JDBC-Treiber von MySQL in einer Anwendung verwenden, legen Sie in der Anwendung die folgenden Eigenschaften fest.
System.setProperty("javax.net.ssl.trustStore",
certs
); System.setProperty("javax.net.ssl.trustStorePassword", "password
");
Anmerkung
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.
Legen Sie während des Startens der Anwendung die folgenden Eigenschaften fest.
java -Djavax.net.ssl.trustStore=
/path_to_truststore/MyTruststore.jks
-Djavax.net.ssl.trustStorePassword=my_truststore_password
com.companyName.MyApplication
Java-Beispielcode für die Herstellung von TLS-Verbindungen
Im folgenden Codebeispiel wird gezeigt, wie Sie die SSL-Verbindung einrichten, die das Serverzertifikat mithilfe von JDBC validiert.
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; } }
Wichtig
Nachdem Sie festgestellt haben, dass Ihre Datenbankverbindungen TLS verwenden, und Ihren Anwendungsvertrauensspeicher aktualisiert haben, können Sie Ihre Datenbank aktualisieren, um die rds-ca-rsa2048-g1-Zertifikate zu verwenden. Anweisungen hierzu finden Sie in Schritt 3 unter Aktualisierung Ihres CA-Zertifikats durch Änderung Ihrer DB-Instance .