Vai al contenuto

Rinnovo dei certificati di cluster PostgreSQL

Preparazioni

Rinnovo del certificato

Prima di eseguire qualsiasi azione sui nodi del cluster PostgreSQL, si prega di preparare nuovi certificati per ciascuno dei nodi del cluster. Come promemoria, i certificati devono essere conformi a diversi vincoli specificati in i prerequisiti del cluster PostgreSQL {target="_blank"}.

Se si desidera effettuare la modifica in tempo reale senza incidere sulla produzione, occorre soddisfare le seguenti condizioni:

  • L'autorità di certificazione non è stata rinnovata dall'ultima generazione di certificati di nodo PostgreSQL
  • L'autorità di certificazione non scadrà durante il periodo di validità dei nuovi certificati
  • È ancora possibile generare e firmare certificati con la stessa autorità di certificazione che è stato utilizzato quando i precedenti certificati nodo PostgreSQL sono stati generati
  • I certificati di nodo PostgreSQL non sono ancora scaduti

Se queste condizioni sono soddisfatte, è possibile prendere in considerazione il rinnovo dei certificati in tempo reale senza interrompere la produzione.

Per rigenerare i certificati utilizzando il openssl PKI indicato, facoltativamente, in la documentazione di installazione del cluster PostgreSQL {target="_blank"}, è necessario riutilizzare la chiave dell'autorità di certificazione e quindi riprodurre i comandi di generazione dei certificati.

Se non è possibile rinnovare i certificati immediatamente e si utilizza un PKI tramite openssl, si consiglia di crearne uno nuovo .

Preparazione dei certificati

Dovrai inviare /tmp/ il certificato dell'autorità di certificazione radicale con un .crt estensione a ciascuno dei nodi PostgreSQL.

Dovrai anche inviare /tmp/ il certificato e la sua chiave privata associata a ciascuno dei nodi PostgreSQL. Se si dispone di un solo .p12 file disponibile, eseguire i seguenti comandi per estrarre il certificato (psql.crt) e la chiave privata (psql.key):

1
2
openssl pkcs12 -clcerts -nokeys -out psql.crt -in P12_CERT
openssl pkcs12 -nocerts -out psql.key -in P12_CERT

Si prega di sostituire i comandi P12_CERT precedenti con il nome del file di certificato .p12.

Rinnovo del certificato

Warning

Se è possibile e si desidera effettuare un aggiornamento in tempo reale dei certificati senza interrompere la produzione, occorre:

Per semplificare le seguenti azioni, si prega di personalizzare le variabili nei comandi di seguito con i valori (modificare la personalizzazione per ogni nodo PostgreSQL):

Valore Variabile Definizione
PSQL_CERT Nuovo certificato di nodo PostgreSQL.
PSQL_KEY Chiave associata al nuovo certificato di nodo PostgreSQL.
PSQL_CA Certificato dell'autorità di certificazione radice che è stata utilizzata per generare il certificato del nodo PostgreSQL.

Connettersi via SSH come root al nodo PostgreSQL i cui certificati si desidera aggiornare ed eseguire i seguenti comandi per sostituire i certificati:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cp /tmp/PSQL_CERT /etc/etcd/peer.crt
cp /tmp/PSQL_CERT /etc/etcd/client.crt
cp /tmp/PSQL_CERT /etc/patroni/client.crt
cp /tmp/PSQL_KEY /etc/etcd/peer.key
cp /tmp/PSQL_KEY /etc/etcd/client.key
cp /tmp/PSQL_KEY /etc/patroni/client.key
cp /tmp/PSQL_CA /etc/etcd/ca.crt
cp /tmp/PSQL_CA /etc/patroni/ca.crt
cp /tmp/PSQL_CA /usr/local/share/ca-certificates/PSQL-CA-`date +%G-%m-%d`.crt
update-ca-certificates

Per completare le modifiche al certificato, è necessario riavviare il nodo PostgreSQL:

1
reboot