Gå til innhold

Fornye sertifikatene til PostgreSQL-clusteret

Forberedelser

Fornyelse av sertifikatet

Før du utfører noen handlinger på nodene i PostgreSQL-clusteret, må du forberede nye sertifikater for hver av nodene i clusteret. Som en påminnelse: sertifikatene må oppfylle flere begrensninger som er angitt i forutsetningene for PostgreSQL-clusteret.

Hvis du vil gjøre endringen fortløpende uten å påvirke produksjonen, må du oppfylle følgende betingelser:

  • Sertifiseringsinstansen er ikke fornyet siden sertifikatene til PostgreSQL-nodene sist ble generert
  • Sertifiseringsinstansen utløper ikke i gyldighetsperioden til de nye sertifikatene
  • Du kan fortsatt generere og signere sertifikater med den samme sertifiseringsinstansen som ble brukt da de forrige sertifikatene til PostgreSQL-nodene ble generert
  • Sertifikatene til PostgreSQL-nodene er ennå ikke utløpt

Hvis disse betingelsene er oppfylt, kan du vurdere å fornye sertifikatene fortløpende uten å avbryte produksjonen.

For å generere sertifikatene på nytt med openssl-PKI-en som eventuelt er beskrevet i dokumentasjonen for installasjon av PostgreSQL-clusteret, må du gjenbruke nøkkelen til sertifiseringsinstansen og deretter kjøre kommandoene for å generere sertifikatene på nytt.

Hvis det ikke er mulig å fornye sertifikatene fortløpende, og du bruker en PKI via openssl, anbefaler vi at du oppretter en ny.

Forberede sertifikatene

Du må sende sertifikatet til rotsertifiseringsinstansen med filendelsen .crt til /tmp/ på hver av PostgreSQL-nodene.

Du må også sende sertifikatet og den tilhørende private nøkkelen til /tmp/ på hver av PostgreSQL-nodene. Hvis du bare har en .p12-fil tilgjengelig, kjører du følgende kommandoer for å hente ut sertifikatet (psql.crt) og den private nøkkelen (psql.key):

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

Erstatt P12_CERT i kommandoene ovenfor med navnet på .p12-sertifikatfilen din.

Fornyelse av sertifikatet

Adadvarsel!

Hvis du kan og vil oppdatere sertifikatene fortløpende med minimal nedetid i produksjonen (1 minutt + utlogging av brukerne), må du:

  • Fornye sertifikatene etter hverandre på hver node
  • Bare fornye sertifikatene på en REPLICA-node (se hvordan du henter informasjon om LEADER-noden)
  • Alltid ha minst to PostgreSQL-noder i drift og arbeide på den tredje
  • For å arbeide på LEADER-noden må du bytte LEADER til en annen node; denne handlingen fører til at brukerne blir logget ut, og til at plattformen er utilgjengelig i omtrent 1 minutt

For å forenkle de følgende handlingene tilpasser du variablene i kommandoene nedenfor med verdiene dine (endre tilpasningen for hver PostgreSQL-node):

Verdi Variabel Definisjon
PSQL_CERT Nytt sertifikat for PostgreSQL-noden.
PSQL_KEY Nøkkel som hører til det nye sertifikatet for PostgreSQL-noden.
PSQL_CA Sertifikat fra rotsertifiseringsinstansen som ble brukt til å generere sertifikatet for PostgreSQL-noden.

Koble til via SSH som root til PostgreSQL-noden du vil oppdatere sertifikatene på, og kjør følgende kommandoer for å erstatte sertifikatene:

 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

For å fullføre endringene av sertifikatene må du starte PostgreSQL-noden på nytt:

1
reboot