Preskočiť na obsah

Obnovenie certifikátov clustera PostgreSQL

Prípravy

Obnovenie certifikátu

Pred vykonaním akýchkoľvek akcií na uzloch clustera PostgreSQL pripravte nové certifikáty pre každý z uzlov clustera. Pripomíname, že certifikáty musia spĺňať niekoľko obmedzení uvedených v predpokladoch clustera PostgreSQL.

Ak chcete zmenu vykonať za chodu bez vplyvu na produkčnú prevádzku, musíte splniť nasledujúce podmienky:

  • Certifikačná autorita nebola obnovená od posledného generovania certifikátov uzlov PostgreSQL
  • Platnosť certifikačnej autority neuplynie počas obdobia platnosti nových certifikátov
  • Stále môžete generovať a podpisovať certifikáty tou istou certifikačnou autoritou, ktorá sa použila pri generovaní predchádzajúcich certifikátov uzlov PostgreSQL
  • Platnosť certifikátov uzlov PostgreSQL ešte neuplynula

Ak sú tieto podmienky splnené, môžete zvážiť obnovenie certifikátov za chodu bez prerušenia produkčnej prevádzky.

Ak chcete znova vygenerovať certifikáty pomocou PKI openssl, ktorá je voliteľne opísaná v dokumentácii k inštalácii clustera PostgreSQL, musíte opätovne použiť kľúč certifikačnej autority a potom znova spustiť príkazy na generovanie certifikátov.

Ak obnovenie certifikátov za chodu nie je možné a používate PKI prostredníctvom openssl, odporúčame vytvoriť novú.

Príprava certifikátov

Do adresára /tmp/ na každom z uzlov PostgreSQL budete musieť odoslať certifikát koreňovej certifikačnej autority s príponou .crt.

Do adresára /tmp/ na každom z uzlov PostgreSQL budete musieť odoslať aj certifikát a k nemu priradený súkromný kľúč. Ak máte k dispozícii len jeden súbor .p12, spustite nasledujúce príkazy na extrahovanie certifikátu (psql.crt) a súkromného kľúča (psql.key):

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

V predchádzajúcich príkazoch nahraďte P12_CERT názvom svojho súboru certifikátu .p12.

Obnovenie certifikátu

Upozornenie!

Ak môžete a chcete aktualizovať certifikáty za chodu s minimálnym výpadkom produkčnej prevádzky (1 minúta + odhlásenie používateľov), budete musieť:

  • Obnoviť certifikáty postupne na každom uzle
  • Obnoviť certifikáty iba na uzle REPLICA (pozrite, ako získať informácie o uzle LEADER)
  • Vždy mať v prevádzke aspoň dva uzly PostgreSQL a pracovať na treťom
  • Ak chcete pracovať na uzle LEADER, prepnite LEADER na iný uzol; táto akcia spôsobí odhlásenie používateľov a nedostupnosť platformy približne na 1 minútu

Na zjednodušenie nasledujúcich krokov prispôsobte premenné v príkazoch nižšie svojim hodnotám (prispôsobenie upravte pre každý uzol PostgreSQL):

Hodnota Premenná Definícia
PSQL_CERT Nový certifikát uzla PostgreSQL.
PSQL_KEY Kľúč priradený k novému certifikátu uzla PostgreSQL.
PSQL_CA Certifikát koreňovej certifikačnej autority, ktorý sa použil na vygenerovanie certifikátu uzla PostgreSQL.

Pripojte sa cez SSH ako root k uzlu PostgreSQL, ktorého certifikáty chcete aktualizovať, a spustite nasledujúce príkazy na nahradenie certifikátov:

 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

Na dokončenie zmeny certifikátov musíte reštartovať uzol PostgreSQL:

1
reboot