Sari la conținut

Reînnoirea certificatelor clusterului PostgreSQL

Pregătiri

Reînnoirea certificatului

Înainte de a efectua orice acțiune pe nodurile clusterului PostgreSQL, pregătiți certificate noi pentru fiecare dintre nodurile clusterului. Vă amintim că certificatele trebuie să respecte mai multe constrângeri precizate în cerințele preliminare ale clusterului PostgreSQL.

Dacă doriți să efectuați modificarea din mers, fără impact asupra producției, trebuie să îndepliniți următoarele condiții:

  • Autoritatea de certificare nu a fost reînnoită de la ultima generare a certificatelor nodurilor PostgreSQL
  • Autoritatea de certificare nu va expira în perioada de validitate a noilor certificate
  • Puteți încă genera și semna certificate cu aceeași autoritate de certificare care a fost utilizată la generarea certificatelor anterioare ale nodurilor PostgreSQL
  • Certificatele nodurilor PostgreSQL nu au expirat încă

Dacă aceste condiții sunt îndeplinite, atunci puteți lua în considerare reînnoirea certificatelor din mers, fără a întrerupe producția.

Pentru a regenera certificatele cu ajutorul PKI openssl indicată, opțional, în documentația de instalare a clusterului PostgreSQL, trebuie să reutilizați cheia autorității de certificare, apoi să reluați comenzile de generare a certificatelor.

Dacă nu este posibil să reînnoiți certificatele din mers și utilizați o PKI prin openssl, vă recomandăm să creați una nouă.

Pregătirea certificatelor

Va trebui să trimiteți în /tmp/ certificatul autorității de certificare rădăcină, cu extensia .crt, către fiecare dintre nodurile PostgreSQL.

Va trebui de asemenea să trimiteți în /tmp/ certificatul și cheia privată asociată către fiecare dintre nodurile PostgreSQL. Dacă dispuneți doar de un fișier .p12, executați următoarele comenzi pentru a extrage certificatul (psql.crt) și cheia privată (psql.key):

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

Înlocuiți în comenzile precedente P12_CERT cu numele fișierului dumneavoastră de certificat .p12.

Reînnoirea certificatului

Atenție!

Dacă puteți și doriți să efectuați o actualizare a certificatelor din mers, cu o indisponibilitate minimă a producției (1 minut + deconectarea utilizatorilor), va trebui să:

  • Reînnoiți certificatele în mod secvențial pe fiecare nod
  • Reînnoiți certificatele numai pe un nod REPLICA (consultați cum se obțin informațiile despre nodul LEADER)
  • Aveți întotdeauna cel puțin două noduri PostgreSQL operaționale și lucrați pe al treilea
  • Pentru a lucra pe nodul LEADER, comutați LEADER-ul pe un alt nod; această acțiune va provoca deconectarea utilizatorilor și indisponibilitatea platformei pentru aproximativ 1 minut

Pentru a simplifica acțiunile următoare, personalizați variabilele din comenzile de mai jos cu valorile dumneavoastră (modificați personalizarea pentru fiecare nod PostgreSQL):

Valoare Variabilă Definiție
PSQL_CERT Certificatul nou al nodului PostgreSQL.
PSQL_KEY Cheia asociată noului certificat al nodului PostgreSQL.
PSQL_CA Certificatul autorității de certificare rădăcină care a fost utilizată pentru a genera certificatul nodului PostgreSQL.

Conectați-vă prin SSH ca root la nodul PostgreSQL ale cărui certificate doriți să le actualizați și executați următoarele comenzi pentru a înlocui certificatele:

 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

Pentru a finaliza modificarea certificatelor, trebuie să reporniți nodul PostgreSQL:

1
reboot