

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.

# Sichern von Verbindungen zu RDS for PostgreSQL mit SSL/TLS
<a name="PostgreSQL.Concepts.General.Security"></a>

RDS for PostgreSQL unterstützt die Secure-Socket-Layer(SSL)-Verschlüsselung für PostgreSQL-DB-Instances. Sie können die PostgreSQL-Verbindung zwischen Ihren Anwendungen und Ihren PostgreSQL-DB-Instances mit SSL verschlüsseln. Sie können auch festlegen, dass für alle Verbindungen zu Ihrer PostgreSQL-DB-Instance SSL verwendet werden soll. RDS for PostgreSQL unterstützt auch Transport Layer Security (TLS), das Nachfolgeprotokoll von SSL.

Weitere Informationen über Amazon RDS und Datenschutz, einschließlich der Verschlüsselung von Verbindungen mit SSL/TLS, finden Sie unter [Datenschutz in Amazon RDS](DataDurability.md).

**Topics**
+ [Verwenden von SSL mit einer PostgreSQL-DB-Instance](PostgreSQL.Concepts.General.SSL.md)
+ [Aktualisierung von Anwendungen für die Verbindung mit PostgreSQL-DB-Instances mithilfe neuer Zertifikate SSL/TLS](ssl-certificate-rotation-postgresql.md)

# Verwenden von SSL mit einer PostgreSQL-DB-Instance
<a name="PostgreSQL.Concepts.General.SSL"></a>

Amazon RDS unterstützt die Secure Socket Layer (SSL)-Verschlüsselung für PostgreSQL-DB-Instances. Sie können die PostgreSQL-Verbindung zwischen Ihren Anwendungen und Ihren PostgreSQL-DB-Instances mit SSL verschlüsseln. Standardmäßig verwendet und erwartet RDS für PostgreSQL, dass sich alle Clients über SSL/TLS verbinden, aber Sie können dies auch verlangen. RDS für PostgreSQL unterstützt Transport Layer Security (TLS) in den Versionen 1.1, 1.2 und 1.3.

Allgemeine Informationen zum SSL-Support und zu PostgreSQL-Datenbanken finden Sie unter [SSL-Support](https://www.postgresql.org/docs/11/libpq-ssl.html) in der PostgreSQL-Dokumentation. Informationen zur Verwendung einer SSL-Verbindung über JDBC finden Sie unter [Konfigurieren des Clients](https://jdbc.postgresql.org/documentation/head/ssl-client.html) in der PostgreSQL-Dokumentation.

SSL-Unterstützung ist in allen AWS Regionen für PostgreSQL verfügbar. Amazon RDS erzeugt ein SSL-Zertifikat für Ihre DB-Instance, wenn die Instance erstellt wird. Wenn Sie die SSL-Zertifikatsverifizierung aktivieren, enthält das SSL-Zertifikat den Endpunkt der DB-Instance als Allgemeinen Namen (Common Name, CN) für das SSL-Zertifikat, sodass es vor Spoofing-Angriffen schützt. 

**Topics**
+ [Herstellen einer Verbindung mit einer PostgreSQL-DB-Instance über SSL](#PostgreSQL.Concepts.General.SSL.Connecting)
+ [Erfordern einer SSL-Verbindung zu einer PostgreSQL-DB-Instance](#PostgreSQL.Concepts.General.SSL.Requiring)
+ [Bestimmen des SSL-Verbindungsstatus](#PostgreSQL.Concepts.General.SSL.Status)
+ [SSL-Verschlüsselungssammlungen in RDS für PostgreSQL](#PostgreSQL.Concepts.General.SSL.Ciphers)

## Herstellen einer Verbindung mit einer PostgreSQL-DB-Instance über SSL
<a name="PostgreSQL.Concepts.General.SSL.Connecting"></a>

**So stellen Sie über SSL eine Verbindung zu einer PostgreSQL-DB-Instance her**

1. Laden Sie das Zertifikat herunter.

   Informationen zum Herunterladen von Zertifikaten finden Sie unter [](UsingWithRDS.SSL.md).

1. Stellen Sie über SSL eine Verbindung zu einer PostgreSQL-DB-Instance her.

   Wenn Sie eine Verbindung über SSL herstellen, kann Ihr Client entscheiden, ob die Zertifikatskette überprüft werden soll. Wenn Ihre Verbindungsparameter `sslmode=verify-ca` oder `sslmode=verify-full` angeben, verlangt Ihr Client, dass sich die RDS CA-Zertifikate im Trust Store befinden oder von der Verbindungs-URL referenziert werden. Diese Anforderung dient zur Prüfung der Zertifikatskette, die Ihr Datenbankzertifikat signiert.

   Wenn ein Client wie psql oder JDBC mit SSL-Unterstützung konfiguriert ist, versucht dieser zunächst standardmäßig, die Verbindung zur Datenbank über SSL herzustellen. Wenn der Client keine Verbindung über SSL herstellen kann, stellt er die Verbindung ohne SSL her. Der für libpq-basierte Clients (wie psql) und JDBC verwendete `sslmode`-Standardmodus ist unterschiedlich. Die libpq-basierten und JDBC-Clients verwenden standardmäßig `prefer`.

   Verwenden Sie den Parameter `sslrootcert`, um auf das Zertifikat zu verweisen, beispielsweise `sslrootcert=rds-ssl-ca-cert.pem`.

Das folgende Beispiel veranschaulicht die Verwendung von `psql`, um eine Verbindung mit SSL und Zertifikatsüberprüfung mit einer PostgreSQL-DB-Instance herzustellen.

```
$ psql "host=db-name.555555555555.ap-southeast-1.rds.amazonaws.com 
    port=5432 dbname=testDB user=testuser sslrootcert=rds-ca-rsa2048-g1.pem sslmode=verify-full"
```

## Erfordern einer SSL-Verbindung zu einer PostgreSQL-DB-Instance
<a name="PostgreSQL.Concepts.General.SSL.Requiring"></a>

Mit dem Parameter `rds.force_ssl` können Sie es erforderlich machen, dass Verbindungen zu Ihrer PostgreSQL-DB-Instance SSL verwenden müssen. Der Standardwert des Parameters `rds.force_ssl` ist für RDS für PostgreSQL 15 und höher auf „1 (ein)“ festgelegt. Bei allen anderen Hauptversionen von RDS für PostgreSQL bis Version 14 ist der Standardwert des Parameters auf „0 (aus)“ festgelegt. Sie können den `rds.force_ssl` Parameter auf 1 (on) setzen, damit er SSL/TLS für Verbindungen zu Ihrem DB-Cluster erforderlich ist. Sie können den Parameter `rds.force_ssl` auf 1 (ein) stellen und damit erforderlich machen, dass Verbindungen zu Ihrer PostgreSQL-DB-Instance SSL verwenden müssen. 

Wenn Sie den Wert dieses Parameters ändern möchten, müssen Sie eine benutzerdefinierte DB-Parametergruppe erstellen. Anschließend ändern Sie den Wert für `rds.force_ssl` in Ihrer benutzerdefinierten DB-Parametergruppe in `1`, um diese Funktion zu aktivieren. Wenn Sie die benutzerdefinierte DB-Parametergruppe vorbereiten, bevor Sie Ihre RDS-for-PostgreSQL-DB-Instance erstellen, können Sie sie während des Erstellungsprozesses (anstelle einer Standardparametergruppe) auswählen. Wenn Sie diesen Schritt ausführen, nachdem Ihre RDS-for-PostgreSQL-DB-Instance bereits ausgeführt wird, müssen Sie die Instance neu starten, damit diese die benutzerdefinierte Parametergruppe verwendet. Weitere Informationen finden Sie unter [Parametergruppen für Amazon RDS](USER_WorkingWithParamGroups.md).

Wenn die `rds.force_ssl`-Funktion auf Ihrer DB-Instance aktiv ist, werden Verbindungsversuche ohne SSL mit der folgenden Meldung abgelehnt:

```
$ psql -h db-name.555555555555.ap-southeast-1.rds.amazonaws.com port=5432 dbname=testDB user=testuser
psql: error: FATAL: no pg_hba.conf entry for host "w.x.y.z", user "testuser", database "testDB", SSL off
```

## Bestimmen des SSL-Verbindungsstatus
<a name="PostgreSQL.Concepts.General.SSL.Status"></a>

Der verschlüsselte Status Ihrer Verbindung wird auf dem Anmelde-Banner angezeigt, wenn Sie sich mit der DB-Instance verbinden:

```
Password for user master: 
psql (10.3) 
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) 
Type "help" for help.
postgres=>
```

Sie können auch die Erweiterung `sslinfo` laden und dann die Funktion `ssl_is_used()` aufrufen, um festzustellen, ob SSL verwendet wird. Die Funktion gibt `t` zurück, wenn für die Verbindung SSL genutzt wird. Andernfalls gibt sie `f` zurück.

```
postgres=> CREATE EXTENSION sslinfo;
CREATE EXTENSION
postgres=> SELECT ssl_is_used();
ssl_is_used
---------
t
(1 row)
```

Wenn Sie detailliertere Informationen erhalten möchten, können Sie die folgende Abfrage verwenden, um Informationen von `pg_settings` abzurufen:

```
SELECT name as "Parameter name", setting as value, short_desc FROM pg_settings WHERE name LIKE '%ssl%';
             Parameter name             |                  value                  |                      short_desc
----------------------------------------+-----------------------------------------+-------------------------------------------------------
 ssl                                    | on                                      | Enables SSL connections.
 ssl_ca_file                            | /rdsdbdata/rds-metadata/ca-cert.pem     | Location of the SSL certificate authority file.
 ssl_cert_file                          | /rdsdbdata/rds-metadata/server-cert.pem | Location of the SSL server certificate file.
 ssl_ciphers                            | HIGH:!aNULL:!3DES                       | Sets the list of allowed SSL ciphers.
 ssl_crl_file                           |                                         | Location of the SSL certificate revocation list file.
 ssl_dh_params_file                     |                                         | Location of the SSL DH parameters file.
 ssl_ecdh_curve                         | prime256v1                              | Sets the curve to use for ECDH.
 ssl_key_file                           | /rdsdbdata/rds-metadata/server-key.pem  | Location of the SSL server private key file.
 ssl_library                            | OpenSSL                                 | Name of the SSL library.
 ssl_max_protocol_version               |                                         | Sets the maximum SSL/TLS protocol version to use.
 ssl_min_protocol_version               | TLSv1.2                                 | Sets the minimum SSL/TLS protocol version to use.
 ssl_passphrase_command                 |                                         | Command to obtain passphrases for SSL.
 ssl_passphrase_command_supports_reload | off                                     | Also use ssl_passphrase_command during server reload.
 ssl_prefer_server_ciphers              | on                                      | Give priority to server ciphersuite order.
(14 rows)
```

Sie können auch alle Informationen über die SSL-Nutzung Ihrer RDS-for-PostgreSQL-DB-Instance nach Prozess, Client und Anwendung sammeln, indem Sie die folgende Abfrage verwenden:

```
SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;
 Database name | User name | ssl |  client_addr   |    application_name    |         backend_type
---------------+-----------+-----+----------------+------------------------+------------------------------
               |           | f   |                |                        | autovacuum launcher
               | rdsadmin  | f   |                |                        | logical replication launcher
               |           | f   |                |                        | background writer
               |           | f   |                |                        | checkpointer
               |           | f   |                |                        | walwriter
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      |                        | client backend
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      | PostgreSQL JDBC Driver | client backend
 postgres      | postgres  | t   | 204.246.162.36 | psql                   | client backend
(8 rows)
```

Wenn Sie die Cipher identifizieren möchten, die für Ihre SSL-Verbindung verwendet wird, können Sie folgende Abfrage erstellen:

```
postgres=> SELECT ssl_cipher();
ssl_cipher
--------------------
DHE-RSA-AES256-SHA
(1 row)
```

Weitere Informationen zur Option `sslmode` finden Sie unter [Datenbankverbindung-Steuerungsfunktionen](https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) in der *PostgreSQL-Dokumentation*.

## SSL-Verschlüsselungssammlungen in RDS für PostgreSQL
<a name="PostgreSQL.Concepts.General.SSL.Ciphers"></a>

Bei Verwendung von TLS 1.2 und früheren Versionen gibt der PostgreSQL-Konfigurationsparameter [ssl\$1ciphers](https://www.postgresql.org/docs/current/runtime-config-connection.html#RUNTIME-CONFIG-CONNECTION-SSL) die Kategorien von Verschlüsselungs-Suiten an, die für SSL-Verbindungen mit der Datenbank zulässig sind. 

 In RDS für PostgreSQL 16 und höher können Sie den Parameter `ssl_ciphers` so ändern, dass bestimmte Werte aus den zulässigen Verschlüsselungs-Suiten verwendet werden. Dies ist ein dynamischer Parameter, der keinen Neustart der Datenbank-Instance erfordert. Verwenden Sie entweder die Amazon-RDS-Konsole oder den folgenden AWS -CLI-Befehl, um die zulässigen Verschlüsselungs-Suiten anzuzeigen: 

```
aws rds describe-db-parameters --db-parameter-group-name <your-parameter-group> --region <region> --endpoint-url <endpoint-url> --output json | jq '.Parameters[] | select(.ParameterName == "ssl_ciphers")'
```

In der folgenden Tabelle sind sowohl die standardmäßigen als auch die zulässigen Verschlüsselungs-Suiten für Versionen aufgeführt, die benutzerdefinierte Konfigurationen unterstützen.


| PostgreSQL-Engine-Version | Standardwerte für die ssl\$1cipher-Suite | Zulässige benutzerdefinierte Werte für die ssl\$1cipher-Suite | 
| --- | --- | --- | 
| 18 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 17 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 16 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 15 | HIGH:\$1aNULL:\$13DES | Benutzerdefinierte ssl\$1ciphers werden nicht unterstützt. | 
| 14 | HIGH:\$1aNULL:\$13DES | Benutzerdefinierte ssl\$1ciphers werden nicht unterstützt. | 
| 13 | HIGH:\$1aNULL:\$13DES | Benutzerdefinierte ssl\$1ciphers werden nicht unterstützt. | 
| 12 | HIGH:\$1aNULL:\$13DES | Benutzerdefinierte ssl\$1ciphers werden nicht unterstützt. | 
| 11.4 und höhere Nebenversionen | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | Benutzerdefinierte ssl\$1ciphers werden nicht unterstützt. | 
| 11,1, 11,2 | HIGH:MEDIUM:\$13DES:\$1aNULL | Benutzerdefinierte ssl\$1ciphers werden nicht unterstützt. | 
| 10.9 und höhere Nebenversionen | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | Benutzerdefinierte ssl\$1ciphers werden nicht unterstützt. | 
| 10.7 und niedrigere Nebenversionen | HIGH:MEDIUM:\$13DES:\$1aNULL | Benutzerdefinierte ssl\$1ciphers werden nicht unterstützt. | 

Um alle Instance-Verbindungen für die Verwendung der Verschlüsselungs-Suite `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` zu konfigurieren, ändern Sie die Parametergruppe wie im folgenden Beispiel gezeigt:

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_ciphers',ParameterValue='TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',ApplyMethod=immediate"
```

In diesem Beispiel wird eine ECDSA-Verschlüsselung verwendet, bei der die Instance eine Zertifizierungsstelle mit ECC (Elliptic Curve Cryptography, elliptische Kurven-Kryptografie) nutzen muss, um eine Verbindung herzustellen. Informationen zu den von Amazon RDS bereitgestellten Zertifizierungsstellen finden Sie unter [Zertifizierungsstellen](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/singWithRDS.SSL.html#UsingWithRDS.SSL.RegionCertificateAuthorities).

Sie können die verwendeten Verschlüsselungen mithilfe der unter [Bestimmen des SSL-Verbindungsstatus](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.SSL.html#PostgreSQL.Concepts.General.SSL.Status) beschriebenen Methoden überprüfen.

Verschlüsselungen können je nach Kontext unterschiedliche Namen haben:
+ Die zulässigen Verschlüsselungen, die Sie in der Parametergruppe konfigurieren können, werden mit ihren IANA-Namen bezeichnet.
+ Die Anmeldebanner `sslinfo` und `psql` verweisen auf Verschlüsselungen, die ihre OpenSSL-Namen verwenden.

Standardmäßig ist der Wert von `ssl_max_protocol_version` in RDS für PostgreSQL 16 und höher TLS v1.3. Sie müssen den Wert dieses Parameters auf TLS v1.2 festlegen, da TLS v1.3 die im Parameter `ssl_ciphers` angegebenen Verschlüsselungskonfigurationen nicht verwendet. Wenn Sie den Wert auf TLS v1.2 festlegen, verwenden Verbindungen nur die Verschlüsselungen, die Sie in `ssl_ciphers` definiert haben.

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_max_protocol_version',ParameterValue='TLSv1.2',ApplyMethod=immediate"
```

Um sich zu vergewissern, dass Datenbankverbindungen SSL verwenden, legen Sie `rds.force_ssl parameter` in der Parametergruppe auf 1 fest. Weitere Informationen zu Parametern und Parametergruppen finden Sie unter [Parametergruppen für Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html). 

# Aktualisierung von Anwendungen für die Verbindung mit PostgreSQL-DB-Instances mithilfe neuer Zertifikate SSL/TLS
<a name="ssl-certificate-rotation-postgresql"></a>

Zertifikate, die für Secure Socket Layer oder Transport Layer Security verwendet werden (SSL/TLS) typically have a set lifetime. When service providers update their Certificate Authority (CA) certificates, clients must update their applications to use the new certificates. Following, you can find information about how to determine if your client applications use SSL/TLSum eine Verbindung zu Ihrer Amazon RDS for PostgreSQL PostgreSQL-DB-Instance herzustellen). Sie finden auch Informationen darüber, wie Sie prüfen können, ob diese Anwendungen das Serverzertifikat überprüfen, wenn sie eine Verbindung herstellen.

**Anmerkung**  
Eine Client-Anwendung, die so konfiguriert ist, dass sie das Serverzertifikat vor der SSL/TLS Verbindung verifiziert, muss über ein gültiges CA-Zertifikat im Trust Store des Clients verfügen. Aktualisieren Sie den Client-Truststore bei Bedarf für neue Zertifikate.

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 Nicht-Produktionsumgebung 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 PostgreSQL-DB-Instances finden Sie unter. [Verwenden von SSL mit einer PostgreSQL-DB-Instance](PostgreSQL.Concepts.General.SSL.md)

**Topics**
+ [Ermitteln, ob Anwendungen Verbindungen mit PostgreSQL-DB-Instances über SSL herstellen](#ssl-certificate-rotation-postgresql.determining-server)
+ [Ermitteln, ob ein Client zum Herstellen von Verbindungen Zertifikatverifizierungen erfordert](#ssl-certificate-rotation-postgresql.determining-client)
+ [Aktualisieren des Trust Stores Ihrer Anwendung](#ssl-certificate-rotation-postgresql.updating-trust-store)
+ [Verwenden von SSL/TLS Verbindungen für verschiedene Arten von Anwendungen](#ssl-certificate-rotation-postgresql.applications)

## Ermitteln, ob Anwendungen Verbindungen mit PostgreSQL-DB-Instances über SSL herstellen
<a name="ssl-certificate-rotation-postgresql.determining-server"></a>

Prüfen Sie die DB-Instance-Konfiguration auf den Wert des Parameters `rds.force_ssl`. Standardmäßig ist der Parameter `rds.force_ssl` für DB-Instances, die PostgreSQL-Versionen vor Version 15 verwenden, auf `0` (aus) festgelegt. Standardmäßig ist `rds.force_ssl` für DB-Instances, die PostgreSQL Version 15 oder höhere Hauptversionen verwenden, auf `1` (ein) festgelegt. Wenn der `rds.force_ssl` Parameter auf `1` (on) gesetzt ist, müssen Clients ihn SSL/TLS für Verbindungen verwenden. Weitere Informationen zu Parametergruppen finden Sie unter [Parametergruppen für Amazon RDS](USER_WorkingWithParamGroups.md).

Wenn Sie die RDS PostgreSQL-Version 9.5 oder eine höhere Hauptversion verwenden und `rds.force_ssl` nicht auf `1` festgelegt ist, fragen Sie die Ansicht `pg_stat_ssl` ab, um auf Verbindungen zu prüfen, die SSL verwenden. Beispielsweise gibt die folgende Abfrage nur SSL-Verbindungen und Informationen zu den Clients zurück, die SSL verwenden.

```
SELECT datname, usename, ssl, client_addr 
  FROM pg_stat_ssl INNER JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid
  WHERE ssl is true and usename<>'rdsadmin';
```

Nur Zeilen, die SSL/TLS Verbindungen verwenden, werden mit Informationen über die Verbindung angezeigt. Dies ist eine Beispielausgabe.

```
 datname  | usename | ssl | client_addr 
----------+---------+-----+-------------
 benchdb  | pgadmin | t   | 53.95.6.13
 postgres | pgadmin | t   | 53.95.6.13
(2 rows)
```

Diese Abfrage zeigt nur die aktuellen Verbindungen zum Zeitpunkt der Abfrage an. Das Fehlen von Ergebnissen weist nicht darauf hin, dass es keine Anwendungen gibt, die SSL-Verbindungen verwenden. Möglicherweise werden zu anderen Zeitpunkten weitere SSL-Verbindungen hergestellt.

## Ermitteln, ob ein Client zum Herstellen von Verbindungen Zertifikatverifizierungen erfordert
<a name="ssl-certificate-rotation-postgresql.determining-client"></a>

Wenn ein Client wie psql oder JDBC mit SSL-Unterstützung konfiguriert ist, versucht dieser zunächst standardmäßig, die Verbindung zur Datenbank über SSL herzustellen. Wenn der Client keine Verbindung über SSL herstellen kann, stellt er die Verbindung ohne SSL her. Der für libpq-basierte Clients (wie psql) und JDBC verwendete `sslmode`-Standardmodus wird auf `prefer` festgelegt. Das Zertifikat auf dem Server wird nur verifiziert, wenn `sslrootcert` angegeben und die Einstellung für `sslmode` auf `verify-ca` oder `verify-full` festgelegt ist. Wenn das Zertifikat ungültig ist, wird ein Fehler ausgelöst.

Verwenden Sie `PGSSLROOTCERT` zur Verifizierung des Zertifikats mit der Umgebungsvariablen `PGSSLMODE`, wobei `PGSSLMODE` auf `verify-ca` oder `verify-full` festgelegt ist.

```
PGSSLMODE=verify-full PGSSLROOTCERT=/fullpath/ssl-cert.pem psql -h pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com -U masteruser -d postgres
```

Verwenden Sie das Argument `sslrootcert` zur Verifizierung des Zertifikats mit `sslmode` im Verbindungszeichenfolgenformat, wobei `sslmode` auf `verify-ca` oder `verify-full` festgelegt ist, um das Zertifikat zu verifizieren.

```
psql "host=pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com sslmode=verify-full sslrootcert=/full/path/ssl-cert.pem user=masteruser dbname=postgres"
```

Wenn Sie beispielsweise in vorherigen Fall ein ungültiges Stammzertifikat verwenden, wird Ihnen im Client einen Fehler ähnlich dem folgenden angezeigt.

```
psql: SSL error: certificate verify failed
```

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

Informationen zur Aktualisierung des Vertrauensspeichers für PostgreSQL-Anwendungen finden Sie unter [Sichere TCP/IP Verbindungen mit SSL](https://www.postgresql.org/docs/current/ssl-tcp.html) in der PostgreSQL-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.

## Verwenden von SSL/TLS Verbindungen für verschiedene Arten von Anwendungen
<a name="ssl-certificate-rotation-postgresql.applications"></a>

Im Folgenden finden Sie Informationen zur Verwendung von SSL/TLS Verbindungen für verschiedene Arten von Anwendungen:
+ **psql**

  Der Client wird über die Befehlszeile durch die Angabe von Optionen als Verbindungszeichenfolge oder Umgebungsvariablen aufgerufen. Für SSL/TLS Verbindungen sind die relevanten Optionen `sslmode` (Umgebungsvariable`PGSSLMODE`), `sslrootcert` (Umgebungsvariable`PGSSLROOTCERT`) relevant.

  Die vollständige Liste der Optionen finden Sie unter [Parameter Key Words](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) in der PostgreSQL-Dokumentation. Die vollständige Liste der Umgebungsvariablen finden Sie unter [Environment Variables](https://www.postgresql.org/docs/current/libpq-envars.html) in der PostgreSQL-Dokumentation.
+ **pgAdmin**

  Dieser browserbasierte Client bietet eine benutzerfreundlichere Oberfläche zum Herstellen von Verbindungen mit PostgreSQL-Datenbanken.

  Informationen zum Konfigurieren von Verbindungen finden Sie in der [pgAdmin-Dokumentation](https://www.pgadmin.org/docs/pgadmin4/latest/server_dialog.html).
+ **JDBC**

  JDBC ermöglicht Datenbankverbindungen mit Java-Anwendungen.

  Allgemeine Informationen zum Herstellen von Verbindungen mit PostgreSQL-Datenbanken über JDBC finden Sie unter [Connecting to the Database](https://jdbc.postgresql.org/documentation/use/#connecting-to-the-database) in der JDBC-Treiber-Dokumentation von PostgreSQL. Informationen zum Herstellen von Verbindungen über SSL/TLS finden Sie unter [Configuring the Client](https://jdbc.postgresql.org/documentation/ssl/#configuring-the-client) in der JDBC-Treiber-Dokumentation von PostgreSQL. 
+ **Python**

  Eine verbreitet für die Herstellung von Verbindungen mit PostgreSQL-Datenbanken verwendete Python-Bibliothek ist `psycopg2`.

  Informationen zum Verwenden von `psycopg2` finden Sie in der [psycopg2-Dokumentation](https://pypi.org/project/psycopg2/). Ein kurzes Tutorial zum Herstellen von Verbindungen mit PostgreSQL-Datenbanken finden Sie unter [Psycopg2-Tutorial](https://wiki.postgresql.org/wiki/Psycopg2_Tutorial). Informationen zu den vom Verbindungsbefehl akzeptierten Optionen finden Sie unter [psycopg2-Modulinhalte](http://initd.org/psycopg/docs/module.html#module-psycopg2).

**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-rsa 2048-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).