Aktualisieren von Anwendungen, um Verbindungen mit MariaDB-Instances mithilfe neuer SSL/TLS-Zertifikate herzustellen - Amazon Relational Database Service

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 MariaDB-Instances mithilfe neuer SSL/TLS-Zertifikate herzustellen

Am 13. Januar 2023 veröffentlichte Amazon RDS neue Zertifizierungsstellen-Zertifikate (Certificate Authority, CA) zum Herstellen von Verbindungen mit Ihren RDS-DB-Instances mithilfe von Secure Socket Layer oder Transport Layer Security (SSL/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 Ihre Anwendungen für die Herstellung von Verbindungen mit Ihren DB-Instances eine Zertifikatverifizierung erfordern.

Anmerkung

Einige Anwendungen sind so konfiguriert, dass sie nur dann Verbindungen mit MariaDB nur 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.

Sie können die folgenden SSL-Modi angeben: disabled, preferred und required. Wenn Sie denpreferred SSL-Modus verwenden und das CA-Zertifikat nicht vorhanden ist oder nicht auf dem neuesten Stand ist, verwendet die Verbindung nicht SSL und stellt weiterhin eine Verbindung erfolgreich her.

Wir empfehlen den preferred-Modus zu vermeiden Wenn die Verbindung im preferred-Modus auf ein ungültiges Zertifikat stößt, wird die Verschlüsselung beendet und unverschlüsselt fortgesetzt.

Nach der Aktualisierung der CA-Zertifikate in den Trust Stores Ihrer Client-Anwendung können Sie die Zertifikate auf Ihren DB-Instances 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 Rotieren Ihrer SSL/TLS-Zertifikate. Weitere Informationen zum Herunterladen von Zertifikaten finden Sie unter . Informationen zum Verwenden von SSL/TLS mit MariaDB-DB-Instances finden Sie unter Verwenden von SSL/TLS mit einer MariaDB-DB-Instance.

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 in der MySQL-Dokumentation.

Wenn MySQL Connector/J 8.0 verwendet wird, erfordert eine SSL-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, wenn Sie Ihre Anwendungen nicht explizit zur Verwendung von SSL/TLS beim Verbinden mit Ihren Datenbanken konfiguriert haben, standardmäßig SSL/TLS. Darüber hinaus führen sie bei Verwendung von SSL/TLS eine teilweise Zertifikatüberprüfung durch und stellen keine Verbindung her, wenn das Datenbankserverzertifikat abgelaufen ist.

Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.

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 in der MySQL-Dokumentation.

Wenn der MySQL 5.7- oder MySQL 8.0-Client verwendet wird, erfordert eine SSL-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 Using TLS/SSL with MariaDB Connector/J in der MariaDB-Dokumentation.

Informationen zum Herunterladen des Stammverzeichnisses finden Sie unter .

Beispiele für Skripte, die Zertifikate importieren, finden Sie unter Beispielskript für den Import von Zertifikaten in Ihren Trust Store.

Anmerkung

Wenn Sie den Trust Store aktualisieren, können Sie ältere Zertifikate beibehalten und die neuen Zertifikate einfach hinzufügen.

Wenn Sie den MariaDB Connector/J JDBC-Treiber 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");

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
Anmerkung

Geben Sie aus Sicherheitsgründen andere Passwörter als hier angegeben an.

Java-Beispielcode für die Herstellung von SSL-Verbindungen

Das folgende Code-Beispiel zeigt, wie die SSL-Verbindung mit JDBC eingerichtet wird.

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; }
Wichtig

Nachdem Sie festgestellt haben, dass Ihre Datenbankverbindungen SSL/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 oder Ihres Clusters.

Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.