Aggiornamento delle applicazioni per la connessione ai cluster DB Aurora PostgreSQL utilizzando nuovi certificati SSL/TLS - Amazon Aurora

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 ai cluster DB Aurora PostgreSQL utilizzando nuovi certificati SSL/TLS

A partire dal 13 gennaio 2023, sono stati pubblicati da Amazon RDS nuovi certificati dell'autorità di certificazione (CA) per la connessione ai cluster database Aurora utilizzando Secure Socket Layer o Transport Layer Security (SSL/TLS). Di seguito sono disponibili le informazioni sull'aggiornamento delle applicazioni per utilizzare i nuovi certificati.

Le informazioni in questo argomento possono aiutarti a stabilire se le applicazioni client utilizzano SSL/TLS per connettersi ai cluster DB. In caso affermativo, puoi determinare anche se le applicazioni richiedono la verifica del certificato per la connessione.

Nota

Alcune applicazioni sono configurate per connettersi ai cluster DB Aurora PostgreSQL solo se sono in grado di verificare il certificato del server.

Per queste applicazioni, è necessario aggiornare gli archivi di trust delle applicazioni client per includere i nuovi certificati CA.

Dopo aver aggiornato i certificati CA negli archivi attendibilità delle applicazioni client, puoi ruotare i certificati nei cluster DB. Consigliamo vivamente di testare queste procedure in un ambiente di sviluppo o di gestione temporanea 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 i cluster DB PostgreSQL, consulta Sicurezza dei dati Aurora PostgreSQL con SSL/TLS.

Determinare se un'applicazione si connette al cluster DB Aurora PostgreSQL utilizzando SSL

Controlla la configurazione del cluster DB per individuare il valore del parametro rds.force_ssl. Per impostazione predefinita, il parametro rds.force_ssl è impostato su 0 (disattivato). 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 Utilizzo di gruppi di parametri.

Se rds.force_ssl non è impostato su 1 (attivato), esegui una query sulla visualizzazione pg_stat_ssl per ottenere le connessioni che utilizzano 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à predefinita sslmode utilizzata per i client basati su libpq (come psql) è diversa da quella per JDBC. I client basati su libpq utilizzano prefer per impostazione predefinita, mentre i client JDBC utilizzano verify-full per impostazione predefinita. Il certificato sul server viene verificato solo quando sslrootcert viene fornito con sslmode set to verify-ca overify-full. Se il certificato non è valido viene generato un errore.

PGSSLROOTCERTDa utilizzare per verificare il certificato con la variabile di PGSSLMODE ambiente, PGSSLMODE impostata su verify-ca overify-full.

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

Utilizza l'sslrootcertargomento per verificare il certificato sslmode nel formato della stringa di connessione, con sslmode impostato su verify-ca overify-full.

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

Ad esempio, nel caso precedente, se utilizzi un certificato root non valido, sul client viene visualizzato un errore simile al seguente.

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.

Nota

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

Aggiornare l'archivio di trust delle applicazioni per JDBC

Puoi aggiornare l'archivio di trust delle applicazioni che utilizzano JDBC per le connessioni SSL/TLS.

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.

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 l'argomento relativo alla connessione al database nella documentazione di PostgreSQL. Per informazioni sulla connessione con SSL/TLS, consulta l'argomento relativo alla configurazione del client nella documentazione di PostgreSQL.

  • 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 stabilito che le connessioni al database utilizzano SSL/TLS e aver aggiornato l'archivio attendibile dell'applicazione, è possibile aggiornare il database per utilizzare i certificati 2048-g1. rds-ca-rsa Per istruzioni, consulta la fase 3 in Aggiornamento del certificato CA modificando l'istanza il cluster di database.