

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 alle istanze DB PostgreSQL utilizzando nuovi certificati SSL/TLS
<a name="ssl-certificate-rotation-postgresql"></a>

Certificati utilizzati per Secure Socket Layer o Transport Layer Security (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/TLSper connettersi alla tua istanza DB 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 SSL/TLS connessione deve disporre di un certificato CA valido nel trust store 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](UsingWithRDS.SSL-certificate-rotation.md). Per ulteriori informazioni sul download, consulta [](UsingWithRDS.SSL.md). Per informazioni sull'utilizzo SSL/TLS con le istanze DB PostgreSQL, consulta. [Utilizzo del protocollo SSL con un'istanza database PostgreSQL](PostgreSQL.Concepts.General.SSL.md)

**Topics**
+ [Determinare se un'applicazione si connette alle istanze DB PostgreSQL utilizzando SSL](#ssl-certificate-rotation-postgresql.determining-server)
+ [Determinare se un client richiede la verifica del certificato per la connessione](#ssl-certificate-rotation-postgresql.determining-client)
+ [Aggiornare l'archivio di trust delle applicazioni](#ssl-certificate-rotation-postgresql.updating-trust-store)
+ [Utilizzo di connessioni per diversi tipi di applicazioni SSL/TLS](#ssl-certificate-rotation-postgresql.applications)

## Determinare se un'applicazione si connette alle istanze DB PostgreSQL utilizzando SSL
<a name="ssl-certificate-rotation-postgresql.determining-server"></a>

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 `rds.force_ssl` parametro è impostato su `1` (on), i client devono utilizzarlo per le connessioni. SSL/TLS Per ulteriori informazioni sui gruppi di parametri, consultare [Gruppi di parametri per Amazon RDS](USER_WorkingWithParamGroups.md).

Se stai utilizzando la versione PostgreSQL RDS 9.5 o successiva e`rds.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 SSL/TLS connessioni 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
<a name="ssl-certificate-rotation-postgresql.determining-client"></a>

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
<a name="ssl-certificate-rotation-postgresql.updating-trust-store"></a>

Per informazioni sull'aggiornamento del trust store per le applicazioni PostgreSQL, [consulta Connessioni TCP/IP sicure con SSL](https://www.postgresql.org/docs/current/ssl-tcp.html) nella documentazione di PostgreSQL.

Per ulteriori informazioni sul download del certificato root, consulta [](UsingWithRDS.SSL.md).

Per gli script di esempio che importano i certificati, consulta [Script di esempio per l'importazione di certificati nel tuo archivio di trust](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

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

## Utilizzo di connessioni per diversi tipi di applicazioni SSL/TLS
<a name="ssl-certificate-rotation-postgresql.applications"></a>

Di seguito vengono fornite informazioni sull'utilizzo delle SSL/TLS connessioni 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. Per SSL/TLS le connessioni, le opzioni pertinenti 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](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS) nella documentazione di PostgreSQL. Per l'elenco completo delle variabili di ambiente, consulta l'argomento relativo alle [variabili di ambiente](https://www.postgresql.org/docs/current/libpq-envars.html) 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](https://www.pgadmin.org/docs/pgadmin4/latest/server_dialog.html).
+ **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](https://jdbc.postgresql.org/documentation/use/#connecting-to-the-database) (Connessione al database) nella documentazione del driver PostgreSQL JDBC. Per informazioni sulla connessione con SSL/TLS, consulta [Configuring the client](https://jdbc.postgresql.org/documentation/ssl/#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](https://pypi.org/project/psycopg2/). Per un breve tutorial su come connettersi a un database PostgreSQL, consulta il [tutorial di Psycopg2](https://wiki.postgresql.org/wiki/Psycopg2_Tutorial). Le informazioni sulle opzioni accettate dal comando di connessione sono disponibili nell'argomento relativo al [contenuto del modulo Psycopg2](http://initd.org/psycopg/docs/module.html#module-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 rds-ca-rsa 2048-g1. Per istruzioni, consulta la fase 3 in [Aggiornamento del certificato CA modificando l’istanza database o il cluster di database](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating).