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.
Aktualisierung von Anwendungen für die Verbindung mit My SQL DB-Instances mithilfe neuer SSL TLS /-Zertifikate
Seit dem 13. Januar 2023 RDS hat Amazon neue Certificate Authority (CA) -Zertifikate für die Verbindung zu Ihren RDS DB-Instances über Secure Socket Layer oder Transport Layer Security (SSL/TLS) veröffentlicht. Im Folgenden finden Sie Informationen dazu, wie Sie Ihre Anwendungen aktualisieren, um die neuen Zertifikate verwenden zu können.
Anhand dieses Themas können Sie feststellen, ob Client-AnwendungenSSL/verwenden, TLS um eine Verbindung zu Ihren DB-Instances herzustellen. 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 eine Verbindung zu My SQL DB-Instances herstellen, wenn sie das Zertifikat auf dem Server erfolgreich verifizieren 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
, undrequired
. Wenn Sie den preferred
SSL Modus verwenden und das CA-Zertifikat nicht existiert oder nicht aktuell ist, wird die Verbindung wieder nicht verwendet SSL und die Verbindung wird ohne Verschlüsselung hergestellt.
Da diese späteren Versionen das SSL Open-Protokoll verwenden, verhindert ein abgelaufenes Serverzertifikat keine erfolgreichen Verbindungen, es sei denn, der required
SSL Modus ist angegeben.
Wir empfehlenden preferred
-Modus. 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 Ihr SSL TLS /-Zertifikat rotieren. Weitere Informationen zum Herunterladen von Zertifikaten finden Sie unter . Hinweise zur Verwendung vonSSL/TLSmit My SQL DB-Instances finden Sie unterSSL/TLSUnterstützung für My SQL DB-Instances auf Amazon RDS.
Themen
Feststellen, ob Anwendungen eine Verbindung zu Ihrer My SQL DB-Instance herstellen SSL
Wenn Sie Amazon RDS for My SQL Version 5.7 oder 8.0 verwenden und das Leistungsschema aktiviert ist, führen Sie die folgende Abfrage aus, um zu überprüfen, ob VerbindungenSSL/verwendenTLS. Informationen zur Aktivierung des Leistungsschemas finden Sie in der SQL Dokumentation Meine Dokumentation unter Leistungsschema — Schnellstart
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 sowohl Ihre eigene Sitzung (admin
) als auch eine Anwendung sehen, bei der Sie angemeldet webapp1
sindSSL.
+----+-----------------+------------------+-----------------+ | 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 für JDBC Clients und Meine SQL Clients eine Zertifikatsüberprüfung erforderlich ist, um eine Verbindung herzustellen.
JDBC
Das folgende Beispiel mit My SQL Connector/J 8.0 zeigt eine Möglichkeit, die JDBC Verbindungseigenschaften einer Anwendung zu überprüfen, um festzustellen, ob für erfolgreiche Verbindungen ein gültiges Zertifikat erforderlich ist. Weitere Informationen zu allen JDBC Verbindungsoptionen für My SQL finden Sie unter Konfigurationseigenschaften
Wenn Sie My SQL Connector/J 8.0 verwenden, muss eine SSL Verbindung anhand des DB-Serverzertifikats überprüft werden, wenn Ihre Verbindungseigenschaften auf VERIFY_CA
oder sslMode
eingestellt sindVERIFY_IDENTITY
, wie im folgenden Beispiel.
Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD);
Anmerkung
Wenn Sie entweder My SQL Java Connector v5.1.38 oder höher oder My SQL Java Connector v8.0.9 oder höher verwenden, um eine Verbindung zu Ihren Datenbanken herzustellen, verwenden diese Clienttreiber standardmäßig/, auch wenn Sie Ihre Anwendungen nicht explizit so konfiguriert haben, dass TLS sieSSL/verwenden, wenn Sie eine Verbindung zu Ihren Datenbanken herstellen. SSL TLS Wenn SieSSL/TLSverwenden, führen sie außerdem eine teilweise Zertifikatsüberprüfung durch und können keine Verbindung herstellen, wenn das Datenbankserverzertifikat abgelaufen ist.
Mein SQL
Die folgenden Beispiele mit My SQL Client zeigen zwei Möglichkeiten, die Option Meine SQL Verbindung eines Skripts dahingehend zu überprüfen, ob für erfolgreiche Verbindungen ein gültiges Zertifikat erforderlich ist. Weitere Informationen zu allen Verbindungsoptionen mit My SQL Client finden Sie in der Dokumentation My unter Clientseitige Konfiguration für verschlüsselte Verbindungen
Wenn Sie den My SQL 5.7- oder My SQL 8.0-Client verwenden, muss eine SSL Verbindung anhand des CA-Zertifikats des Servers verifiziert werden, wenn Sie für die --ssl-mode
Option VERIFY_CA
oder angebenVERIFY_IDENTITY
, wie im folgenden Beispiel.
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/
ssl-cert.pem
--ssl-mode=VERIFY_CA
Wenn Sie den My SQL 5.6 Client verwenden, muss eine SSL Verbindung anhand des CA-Zertifikats des Servers verifiziert werden, wenn Sie die --ssl-verify-server-cert
Option angeben, wie im folgenden Beispiel.
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 zur Aktualisierung des Vertrauensspeichers für Meine SQL Anwendungen finden Sie unter SSLZertifikate installieren
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 JDBC MySQL-Treiber in einer Anwendung verwenden, legen Sie die folgenden Eigenschaften in der Anwendung 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_trust_store/MyTruststore.jks
-Djavax.net.ssl.trustStorePassword=my_trust_store_password
com.companyName.MyApplication
Anmerkung
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.
Beispiel für Java-Code zum Herstellen von SSL Verbindungen
Das folgende Codebeispiel zeigt, wie Sie die SSL Verbindung einrichten, mit JDBC der das Serverzertifikat validiert wird.
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; } }
Wichtig
Nachdem Sie festgestellt haben, dass Ihre DatenbankverbindungenSSL/verwenden, TLS und Ihren Application Trust Store aktualisiert haben, können Sie Ihre Datenbank so aktualisieren, dass sie die rds-ca-rsa 2048-g1-Zertifikate verwendet. 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.