

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 zu MySQL-DB-Instances mithilfe neuer SSL/TLS Zertifikate
<a name="ssl-certificate-rotation-mysql"></a>

Seit dem 13. Januar 2023 hat Amazon RDS neue Certificate Authority (CA) -Zertifikate für die Verbindung mit 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-Anwendungen für die Verbindung SSL/TLS zu Ihren DB-Instances verwendet werden. 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 MySQL-DB-Instances 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 den `preferred` SSL-Modus verwenden und das CA-Zertifikat nicht vorhanden oder nicht auf dem neuesten Stand ist, verwendet die Verbindung nicht SSL und stellt eine Verbindung ohne Verschlüsselung her.  
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](UsingWithRDS.SSL-certificate-rotation.md). Weitere Informationen zum Herunterladen von Zertifikaten finden Sie unter [](UsingWithRDS.SSL.md). Hinweise zur Verwendung SSL/TLS mit MySQL-DB-Instances finden Sie unter[SSL/TLS Unterstützung für MySQL-DB-Instances auf Amazon RDS](MySQL.Concepts.SSLSupport.md).

**Topics**
+ [Ermitteln, ob Anwendungen Verbindungen mit Ihrer MySQL-DB-Instance mithilfe von SSL herstellen](#ssl-certificate-rotation-mysql.determining-server)
+ [Ermitteln, ob ein Client zum Herstellen von Verbindungen Zertifikatverifizierungen erfordert](#ssl-certificate-rotation-mysql.determining-client)
+ [Aktualisieren des Trust Stores Ihrer Anwendung](#ssl-certificate-rotation-mysql.updating-trust-store)
+ [Java-Beispielcode für die Herstellung von SSL-Verbindungen](#ssl-certificate-rotation-mysql.java-example)

## Ermitteln, ob Anwendungen Verbindungen mit Ihrer MySQL-DB-Instance mithilfe von SSL herstellen
<a name="ssl-certificate-rotation-mysql.determining-server"></a>

Wenn Sie Amazon RDS for MySQL Version 5.7, 8.0 oder 8.4 verwenden und das Leistungsschema aktiviert ist, führen Sie die folgende Abfrage aus, um zu überprüfen, ob Verbindungen verwendet werden SSL/TLS. Informationen zum Aktivieren des Performance-Schemas finden Sie unter [Performance Schema Quick Start](https://dev.mysql.com/doc/refman/8.0/en/performance-schema-quick-start.html) in der MySQL-Dokumentation.

```
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 SSL 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
<a name="ssl-certificate-rotation-mysql.determining-client"></a>

Sie können überprüfen, ob JDBC-Clients und MySQL-Clients zum Herstellen von Verbindungen Zertifikatverifizierungen erfordern.

### JDBC
<a name="ssl-certificate-rotation-mysql.determining-client.jdbc"></a>

Das folgende Beispiel mit MySQL Connector/J 8.0 zeigt eine Möglichkeit, die JDBC-Verbindungseigenschaften einer Anwendung zu überprüfen, um festzustellen, ob erfolgreiche Verbindungen ein gültiges Zertifikat erfordern. Weitere Informationen zu allen JDBC-Verbindungsoptionen für MySQL finden Sie unter [Configuration Properties](https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html) in der MySQL-Dokumentation.

Wenn Sie MySQL Connector/J 8.0 verwenden, erfordert eine SSL-Verbindung eine Überprüfung anhand des DB-Serverzertifikats, wenn Ihre Verbindungseigenschaften auf `VERIFY_CA` oder `sslMode` gesetzt sind`VERIFY_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 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 zu Ihren Datenbanken herzustellen, auch wenn Sie Ihre Anwendungen nicht explizit so konfiguriert haben, dass sie SSL/TLS beim Herstellen einer Verbindung zu Ihren Datenbanken verwendet werden, verwenden diese Clienttreiber standardmäßig SSL/TLS Darüber hinaus führen sie bei der Verwendung SSL/TLS eine teilweise Zertifikatsüberprüfung durch und können keine Verbindung herstellen, wenn das Datenbankserverzertifikat abgelaufen ist.

### MySQL
<a name="ssl-certificate-rotation-mysql.determining-client.mysql"></a>

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 in der MySQL-Dokumentation unter [ Client-side Konfiguration für verschlüsselte Verbindungen](https://dev.mysql.com/doc/refman/8.0/en/using-encrypted-connections.html#using-encrypted-connections-client-side-configuration).

Wenn MySQL-Client-Version 5.7 oder höher 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                
```

## Aktualisieren des Trust Stores Ihrer Anwendung
<a name="ssl-certificate-rotation-mysql.updating-trust-store"></a>

Informationen zum Aktualisieren des Trust Stores für MySQL-Anwendungen finden Sie unter [Installing SSL Certificates](https://dev.mysql.com/doc/mysql-monitor/8.0/en/mem-ssl-installation.html) in der MySQL-Dokumentation.

Informationen zum Herunterladen des Stammverzeichnisses finden Sie unter [](UsingWithRDS.SSL.md).

Beispiele für Skripte, die Zertifikate importieren, finden Sie unter [Beispielskript für den Import von Zertifikaten in Ihren Trust Store](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

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

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}}");
```

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.

## Java-Beispielcode für die Herstellung von SSL-Verbindungen
<a name="ssl-certificate-rotation-mysql.java-example"></a>

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 = "{{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 Datenbankverbindungen Ihren Anwendungs-Truststore verwenden, SSL/TLS und Ihren Anwendungs-Truststore aktualisiert haben, können Sie Ihre Datenbank so aktualisieren, dass sie die rds-ca-rsa2048-g1-Zertifikate verwendet. Anleitungen hierzu finden Sie in Schritt 3 unter [Aktualisieren des CA-Zertifikats durch Ändern der DB-Instanceoder des DB-Clusters](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating).  
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.