Gå til indholdet

Fornyelse af certifikaterne til PostgreSQL-clusteret

Forberedelser

Fornyelse af certifikatet

Inden du udfører nogen handlinger på noderne i PostgreSQL-clusteret, skal du forberede nye certifikater til hver af clusterets noder. Til erindring: certifikaterne skal overholde flere begrænsninger, der er angivet i forudsætningerne for PostgreSQL-clusteret.

Hvis du vil foretage ændringen i drift uden at påvirke produktionen, skal du opfylde følgende betingelser:

  • Certificeringsmyndigheden er ikke blevet fornyet siden den seneste generering af certifikater til PostgreSQL-noderne
  • Certificeringsmyndigheden udløber ikke i de nye certifikaters gyldighedsperiode
  • Du kan fortsat generere og signere certifikater med den samme certificeringsmyndighed, som blev brugt, da de tidligere certifikater til PostgreSQL-noderne blev genereret
  • Certifikaterne til PostgreSQL-noderne er endnu ikke udløbet

Hvis disse betingelser er opfyldt, kan du overveje at fornye certifikaterne i drift uden at afbryde produktionen.

For at regenerere certifikaterne med den openssl-PKI, der eventuelt er beskrevet i dokumentationen til installation af PostgreSQL-clusteret, skal du genbruge certificeringsmyndighedens nøgle og derefter køre kommandoerne til generering af certifikater igen.

Hvis det ikke er muligt at fornye certifikaterne i drift, og du bruger en PKI via openssl, anbefaler vi, at du opretter en ny.

Forberedelse af certifikaterne

Du skal sende certifikatet fra rodcertificeringsmyndigheden med filtypen .crt til /tmp/ på hver af PostgreSQL-noderne.

Du skal også sende certifikatet og den tilhørende private nøgle til /tmp/ på hver af PostgreSQL-noderne. Hvis du kun har én .p12-fil til rådighed, skal du køre følgende kommandoer for at udtrække certifikatet (psql.crt) og den private nøgle (psql.key):

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

Erstat P12_CERT i de foregående kommandoer med navnet på din .p12-certifikatfil.

Fornyelse af certifikatet

Advarsel!

Hvis du kan og ønsker at opdatere certifikaterne i drift med minimal nedetid i produktionen (1 minut + brugerne logges af), skal du:

  • Fornye certifikaterne sekventielt på hver node
  • Kun fornye certifikaterne på en REPLICA-node (se, hvordan du henter oplysninger om LEADER-noden)
  • Altid have mindst to PostgreSQL-noder i drift og arbejde på den tredje
  • For at arbejde på LEADER-noden skal du skifte LEADER til en anden node; denne handling medfører, at brugerne logges af, og at platformen er utilgængelig i cirka 1 minut

For at forenkle de følgende handlinger skal du tilpasse variablerne i kommandoerne nedenfor med dine værdier (tilpasningen skal ændres for hver PostgreSQL-node):

Værdi Variabel Definition
PSQL_CERT Nyt certifikat til PostgreSQL-noden.
PSQL_KEY Nøgle, der er knyttet til det nye certifikat til PostgreSQL-noden.
PSQL_CA Certifikat fra den rodcertificeringsmyndighed, der blev brugt til at generere certifikatet til PostgreSQL-noden.

Forbind via SSH som root til den PostgreSQL-node, hvis certifikater du vil opdatere, og kør følgende kommandoer for at erstatte certifikaterne:

 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 at afslutte ændringerne af certifikaterne skal du genstarte PostgreSQL-noden:

1
reboot