Preskoči na sadržaj

Obnavljanje certifikata klastera PostgreSQL

Pripreme

Obnova certifikata

Prije izvršavanja bilo kakvih radnji na čvorovima klastera PostgreSQL pripremite nove certifikate za svaki čvor klastera. Podsjećamo da certifikati moraju zadovoljiti nekoliko ograničenja navedenih u preduvjetima klastera PostgreSQL.

Ako promjenu želite provesti tijekom rada bez utjecaja na produkciju, morate ispuniti sljedeće uvjete:

  • Certifikacijsko tijelo nije obnovljeno od posljednjeg generiranja certifikata čvorova PostgreSQL
  • Certifikacijsko tijelo neće isteći tijekom razdoblja valjanosti novih certifikata
  • Još uvijek možete generirati i potpisivati certifikate istim certifikacijskim tijelom koje je korišteno pri generiranju prethodnih certifikata čvorova PostgreSQL
  • Certifikati čvorova PostgreSQL još nisu istekli

Ako su ti uvjeti ispunjeni, možete razmotriti obnovu certifikata tijekom rada bez prekidanja produkcije.

Da biste ponovno generirali certifikate pomoću infrastrukture PKI openssl koja je, kao mogućnost, opisana u dokumentaciji za instalaciju klastera PostgreSQL, morate ponovno upotrijebiti ključ certifikacijskog tijela, a zatim ponovno izvršiti naredbe za generiranje certifikata.

Ako certifikate nije moguće obnoviti u hodu, a koristite PKI putem openssl, preporučujemo da stvorite novu infrastrukturu PKI.

Priprema certifikata

Certifikat korijenskog certifikacijskog tijela s nastavkom .crt morate poslati u /tmp/ na svakom čvoru PostgreSQL.

U /tmp/ na svakom čvoru PostgreSQL morate poslati i certifikat te pripadajući privatni ključ. Ako imate samo jednu datoteku .p12, pokrenite sljedeće naredbe da biste izdvojili certifikat (psql.crt) i privatni ključ (psql.key):

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

U prethodnim naredbama zamijenite P12_CERT nazivom svoje datoteke certifikata .p12.

Obnova certifikata

Upozorenje!

Ako možete i želite ažurirati certifikate tijekom rada uz minimalan prekid produkcije (1 minuta + odjava korisnika), morate:

  • Obnavljati certifikate redom, na jednom po jednom čvoru
  • Obnavljati certifikate samo na čvoru REPLICA (pogledajte kako dohvatiti informacije o čvoru LEADER)
  • Uvijek imati barem dva funkcionalna čvora PostgreSQL i raditi na trećem
  • Da biste radili na čvoru LEADER, prebacite LEADER na drugi čvor; ta će radnja odjaviti korisnike, a platforma će biti nedostupna približno 1 minutu

Da biste pojednostavnili sljedeće radnje, prilagodite varijable u naredbama u nastavku svojim vrijednostima (prilagodbu izmijenite za svaki čvor PostgreSQL):

Vrijednost Varijabla Definicija
PSQL_CERT Novi certifikat čvora PostgreSQL.
PSQL_KEY Ključ pridružen novom certifikatu čvora PostgreSQL.
PSQL_CA Certifikat korijenskog certifikacijskog tijela koji je upotrijebljen za generiranje certifikata čvora PostgreSQL.

Povežite se putem protokola SSH kao root s čvorom PostgreSQL čije certifikate želite ažurirati i pokrenite sljedeće naredbe da biste zamijenili certifikate:

 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

Da biste dovršili promjenu certifikata, morate ponovno pokrenuti čvor PostgreSQL:

1
reboot