Aggiornamento delle applicazioni per la connessione a istanze database PostgreSQL mediante nuovi certificati SSL/TLS. - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiornamento delle applicazioni per la connessione a istanze database PostgreSQL mediante nuovi certificati SSL/TLS.

I certificati utilizzati per Secure Socket Layer o Transport Layer Security (SSL/TLS) hanno in genere una durata prestabilita. Quando i provider di servizi aggiornano i certificati dell'autorità di certificazione (CA), i client devono aggiornare le loro applicazioni per utilizzare i nuovi certificati. Di seguito, puoi trovare informazioni su come determinare se le applicazioni client utilizzano SSL/TLS per connettersi all'istanza database Amazon RDS for PostgreSQL. Troverai inoltre informazioni su come controllare se tali applicazioni verificano il certificato del server al momento della connessione.

Nota

Un'applicazione client configurata per verificare il certificato del server prima della connessione SSL/TLS deve disporre di un certificato CA valido nell'archivio trust del client. Aggiorna l'archivio trust del client quando necessario per i nuovi certificati.

Dopo aver aggiornato i certificati CA negli archivi di trust delle applicazioni client, puoi ruotare i certificati nelle istanze database. Consigliamo vivamente di testare queste procedure in un ambiente non di produzione prima di implementarle negli ambienti di produzione.

Per ulteriori informazioni sulla rotazione dei certificati, consulta Rotazione del certificato SSL/TLS. Per ulteriori informazioni sul download, consulta . Per informazioni sull'utilizzo di SSL/TLS con le istanze database PostgreSQL, consulta Utilizzo del protocollo SSL con un'istanza database PostgreSQL.

Determinare se un'applicazione si connette alle istanze DB PostgreSQL utilizzando SSL

Verifica la configurazione delle istanze database per il valore del parametro rds.force_ssl. Per impostazione predefinita, il parametro rds.force_ssl è impostato su 0 (disattivato) per le istanze DB che utilizzano versioni di PostgreSQL precedenti alla versione 15. Per impostazione predefinita, il parametro rds.force_ssl è impostato su 1 (attivato) per le istanze DB che utilizzano PostgreSQL versione 15 e versioni principali successive. Se il parametro rds.force_ssl è impostato su 1 (attivato), i client devono utilizzare SSL/TLS per le connessioni. Per ulteriori informazioni sui gruppi di parametri, consultare Gruppi di parametri per Amazon RDS.

Se stai utilizzando la versione PostgreSQL RDS 9.5 o successiva erds.force_ssl non è impostato su 1 (attivato), esegui la query di visualizzazione pg_stat_ssl per verificare le connessioni che usano SSL. Ad esempio, la query seguente restituisce solo le connessioni SSL e le informazioni sui client che utilizzano SSL.

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';

Vengono visualizzate solo le righe che utilizzano connessioni SSL/TLS con informazioni sulla connessione. Di seguito è riportato un output di esempio.

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

La query precedente visualizza solo le connessioni in uso al momento della query. L'assenza di risultati non indica che nessuna applicazione stia utilizzando connessioni SSL. Altre connessioni SSL potrebbero essere stabilite in un momento diverso.

Determinare se un client richiede la verifica del certificato per la connessione

Quando un client, come psql o JDBC, è configurato con il supporto SSL, per impostazione predefinita tenta innanzitutto di connettersi al database con SSL. Se il client non riesce a connettersi con SSL, torna a connettersi senza SSL. La modalità sslmode predefinita utilizzata per i client basati su libpq (come psql) e JDBC è impostata su prefer. Il certificato del server viene verificato solo quando sslrootcert viene fornito con sslmode impostato su verify-ca o verify-full. Se il certificato non è valido viene generato un errore.

Utilizza PGSSLROOTCERT per verificare il certificato con la variabile di ambiente PGSSLMODE, con PGSSLMODE impostato su verify-ca o verify-full.

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

Utilizza l’argomento sslrootcert per verificare il certificato con sslmode nel formato stringa di connessione, con sslmode impostato su verify-ca o verify-full.

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

Ad esempio, nel caso precedente, se stai utilizzando un certificato root non valido, sul client vedrai il seguente errore.

psql: SSL error: certificate verify failed

Aggiornare l'archivio di trust delle applicazioni

Per informazioni sull'aggiornamento dell'archivio attendibilità per le applicazioni PostgreSQL, consulta l'argomento relativo alle connessioni TCP/IP sicure con SSL nella documentazione di PostgreSQL.

Per ulteriori informazioni sul download del certificato root, consulta .

Per gli script di esempio che importano i certificati, consulta Script di esempio per l'importazione di certificati nel tuo archivio di trust.

Nota

Quando aggiorni l'archivio di trust puoi conservare i certificati meno recenti oltre ad aggiungere i nuovi certificati.

Utilizzo delle connessioni SSL/TLS per diversi tipi di applicazioni

Di seguito vengono fornite le informazioni sull'utilizzo delle connessioni SSL/TLS per diversi tipi di applicazioni.

  • psql

    Il client viene invocato dalla riga di comando specificando le opzioni come stringa di connessione o variabili di ambiente. Le opzioni rilevanti per le connessioni SSL/TLS sono sslmode (variabile di ambiente PGSSLMODE), sslrootcert (variabile di ambiente PGSSLROOTCERT).

    Per l'elenco completo delle opzioni, consulta l'argomento relativo alle parole chiave dei parametri nella documentazione di PostgreSQL. Per l'elenco completo delle variabili di ambiente, consulta l'argomento relativo alle variabili di ambiente nella documentazione di PostgreSQL.

  • pgAdmin

    Questo client basato su browser fornisce un'interfaccia più intuitiva per la connessione a un database PostgreSQL.

    Per informazioni sulla configurazione delle connessioni, consulta la documentazione di pgAdmin.

  • JDBC

    JDBC abilita le connessioni al database con le applicazioni Java.

    Per informazioni generali sulla connessione a un database PostgreSQL con JDBC, consulta Connecting to the database (Connessione al database) nella documentazione del driver PostgreSQL JDBC. Per informazioni sulla connessione con SSL/TLS, consulta Configuring the client (Configurazione del client) nella documentazione del driver PostgreSQL JDBC.

  • Python

    Una popolare libreria Python per la connessione ai database PostgreSQL è psycopg2.

    Per informazioni sull'utilizzo di psycopg2, consulta la documentazione psycopg2. Per un breve tutorial su come connettersi a un database PostgreSQL, consulta il tutorial di Psycopg2. Le informazioni sulle opzioni accettate dal comando di connessione sono disponibili nell'argomento relativo al contenuto del modulo Psycopg2.

Importante

Dopo aver determinato che le connessioni al database utilizzano SSL/TLS e aver aggiornato l'archivio di trust delle applicazioni, puoi aggiornare il database per utilizzare i certificati rds-ca-rsa2048-g1. Per istruzioni, consulta la fase 3 in Aggiornamento del certificato CA modificando l’istanza database o il cluster di database.