Aktualisieren von Anwendungen für die Verbindung mit PostgreSQL-DB-Instances unter Verwendung neuer SSL/TLS-Zertifikate - 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 für die Verbindung mit PostgreSQL-DB-Instances unter Verwendung neuer SSL/TLS-Zertifikate

Zertifikate, die für Secure Socket Layer oder Transport Layer Security (SSL/TLS) verwendet werden, haben normalerweise eine festgelegte Lebensdauer. Wenn Dienstanbieter ihre Certificate-Authority(CA)-Zertifikate aktualisieren, müssen Clients ihre Anwendungen aktualisieren, um die neuen Zertifikate zu verwenden. Im Folgenden finden Sie Informationen dazu, wie Sie ermitteln, ob Ihre Client-Anwendungen für die Herstellung von Verbindungen mit Ihrer DB-Instance von Amazon RDS für PostgreSQL SSL/TLS verwenden. 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 das Serverzertifikat vor einer SSL/TLS-Verbindung überprüft wird, muss über ein gültiges CA-Zertifikat im Truststore 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 Rotieren Ihrer SSL/TLS-Zertifikate. Weitere Informationen zum Herunterladen von Zertifikaten finden Sie unter . Informationen zum Verwenden von SSL/TLS mit PostgreSQL-DB-Instances finden Sie unter Verwenden von SSL mit einer PostgreSQL-DB-Instance.

Ermitteln, ob Anwendungen Verbindungen mit PostgreSQL-DB-Instances über SSL herstellen

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 Parameter rds.force_ssl auf 1 (ein) festgelegt ist, müssen Clients SSL/TLS für Verbindungen verwenden. Weitere Informationen zu Parametergruppen finden Sie unter Parametergruppen für Amazon RDS.

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 zur 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

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

Informationen zum Aktualisieren des Trust Stores für PostgreSQL-Anwendungen finden Sie unter Secure TCP/IP Connections with SSL in der PostgreSQL-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.

Verwenden von SSL/TLS-Verbindungen für verschiedene Arten von Anwendungen

Im Folgenden finden Sie Informationen zum Verwenden 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. Im Fall von SSL/TLS-Verbindungen sind die relevanten Optionen sslmode (Umgebungsvariable PGSSLMODE), sslrootcert (Umgebungsvariable PGSSLROOTCERT).

    Die vollständige Liste der Optionen finden Sie unter Parameter Key Words in der PostgreSQL-Dokumentation. Die vollständige Liste der Umgebungsvariablen finden Sie unter Environment Variables 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.

  • 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 in der JDBC-Treiber-Dokumentation von PostgreSQL. Informationen zum Herstellen von Verbindungen über SSL/TLS finden Sie unter 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. Ein kurzes Tutorial zum Herstellen von Verbindungen mit PostgreSQL-Datenbanken finden Sie unter Psycopg2-Tutorial. Informationen zu den vom Verbindungsbefehl akzeptierten Optionen finden Sie unter psycopg2-Modulinhalte.

Wichtig

Wenn Sie festgestellt haben, dass Ihre Datenbankverbindungen SSL/TLS verwenden, und Sie den Trust Store Ihrer Anwendung 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-Instance oder des DB-Clusters.