Přeskočit obsah

Obnovení certifikátů clusteru PostgreSQL

Příprava

Obnovení certifikátu

Před provedením jakýchkoli akcí na uzlech clusteru PostgreSQL připravte nové certifikáty pro každý z uzlů clusteru. Připomínáme, že certifikáty musí splňovat několik omezení uvedených v předpokladech clusteru PostgreSQL.

Pokud chcete provést změnu za běhu bez dopadu na produkční provoz, musíte splnit následující podmínky:

  • Certifikační autorita nebyla od posledního generování certifikátů uzlů PostgreSQL obnovena
  • Platnost certifikační autority nevyprší během doby platnosti nových certifikátů
  • Stále můžete generovat a podepisovat certifikáty stejnou certifikační autoritou, která byla použita při generování předchozích certifikátů uzlů PostgreSQL
  • Platnost certifikátů uzlů PostgreSQL ještě nevypršela

Pokud jsou tyto podmínky splněny, můžete zvážit obnovení certifikátů za běhu bez přerušení produkčního provozu.

Chcete-li znovu vygenerovat certifikáty pomocí PKI openssl, která je volitelně uvedena v dokumentaci k instalaci clusteru PostgreSQL, musíte znovu použít klíč certifikační autority a potom znovu spustit příkazy pro generování certifikátů.

Pokud není možné obnovit certifikáty za běhu a používáte PKI přes openssl, doporučujeme vytvořit novou.

Příprava certifikátů

Do adresáře /tmp/ na každém z uzlů PostgreSQL budete muset odeslat certifikát kořenové certifikační autority s příponou .crt.

Certifikát a jeho přidružený privátní klíč budete také muset odeslat do /tmp/ na každý z uzlů PostgreSQL. Pokud máte k dispozici pouze jeden soubor .p12, spusťte následující příkazy, abyste z něj extrahovali certifikát (psql.crt) a privátní klíč (psql.key):

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

V předchozích příkazech nahraďte P12_CERT názvem svého souboru certifikátu .p12.

Obnovení certifikátu

Upozornění!

Pokud můžete a chcete certifikáty aktualizovat za provozu s minimálním výpadkem produkce (1 minuta + odhlášení uživatelů), musíte:

  • Obnovovat certifikáty postupně na každém uzlu
  • Obnovovat certifikáty pouze na uzlu REPLICA (viz, jak získat informace z uzlu LEADER)
  • Vždy mít v provozu alespoň dva uzly PostgreSQL a pracovat na třetím
  • Chcete-li pracovat na uzlu LEADER, přepněte roli LEADER na jiný uzel; tato akce způsobí odhlášení uživatelů a nedostupnost platformy přibližně na 1 minutu

Pro zjednodušení následujících kroků přizpůsobte proměnné v níže uvedených příkazech svým hodnotám (přizpůsobení upravte pro každý uzel PostgreSQL):

Hodnota Proměnná Definice
PSQL_CERT Nový certifikát uzlu PostgreSQL.
PSQL_KEY Klíč přidružený k novému certifikátu uzlu PostgreSQL.
PSQL_CA Certifikát kořenové certifikační autority, který byl použit k vygenerování certifikátu uzlu PostgreSQL.

Připojte se přes SSH jako root k uzlu PostgreSQL, jehož certifikáty chcete aktualizovat, a spusťte následující příkazy, abyste certifikáty nahradili:

 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

Chcete-li dokončit změnu certifikátů, musíte uzel PostgreSQL restartovat:

1
reboot