Przejdź do treści

Odnawianie certyfikatów clustera PostgreSQL

Przygotowania

Odnowienie certyfikatu

Przed wykonaniem jakichkolwiek działań na węzłach clustera PostgreSQL przygotuj nowe certyfikaty dla każdego z węzłów clustera. Przypominamy, że certyfikaty muszą spełniać kilka ograniczeń wskazanych w wymaganiach wstępnych clustera PostgreSQL.

Jeśli chcesz przeprowadzić zmianę w trakcie pracy, bez wpływu na produkcję, musisz spełnić następujące warunki:

  • Urząd certyfikacji nie został odnowiony od ostatniego wygenerowania certyfikatów węzłów PostgreSQL
  • Urząd certyfikacji nie wygaśnie w okresie ważności nowych certyfikatów
  • Nadal możesz generować i podpisywać certyfikaty tym samym urzędem certyfikacji, który został użyty przy generowaniu poprzednich certyfikatów węzłów PostgreSQL
  • Certyfikaty węzłów PostgreSQL jeszcze nie wygasły

Jeśli te warunki są spełnione, możesz rozważyć odnowienie certyfikatów w trakcie pracy, bez przerywania produkcji.

Aby ponownie wygenerować certyfikaty za pomocą PKI openssl opisanej opcjonalnie w dokumentacji instalacji clustera PostgreSQL, musisz ponownie użyć klucza urzędu certyfikacji, a następnie powtórzyć polecenia generowania certyfikatów.

Jeśli odnowienie certyfikatów w trakcie pracy nie jest możliwe, a używasz PKI za pośrednictwem openssl, zalecamy utworzenie nowej.

Przygotowanie certyfikatów

Certyfikat głównego urzędu certyfikacji z rozszerzeniem .crt musisz przesłać do /tmp/ na każdym z węzłów PostgreSQL.

Do /tmp/ na każdym z węzłów PostgreSQL musisz również przesłać certyfikat i powiązany z nim klucz prywatny. Jeśli masz dostępny tylko jeden plik .p12, wykonaj następujące polecenia, aby wyodrębnić certyfikat (psql.crt) i klucz prywatny (psql.key):

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

W poprzednich poleceniach zamień P12_CERT na nazwę swojego pliku certyfikatu .p12.

Odnowienie certyfikatu

Ostrzeżenie!

Jeśli możesz i chcesz zaktualizować certyfikaty w trakcie pracy, z minimalną przerwą w produkcji (1 minuta + wylogowanie użytkowników), musisz:

  • Odnawiać certyfikaty kolejno na każdym węźle
  • Odnawiać certyfikaty wyłącznie na węźle REPLICA (zobacz, jak odczytać informacje o węźle LEADER)
  • Zawsze utrzymywać co najmniej dwa węzły PostgreSQL sprawne i pracować na trzecim
  • Aby pracować na węźle LEADER, przełącz LEADER na inny węzeł; ta operacja spowoduje wylogowanie użytkowników i niedostępność platformy na około 1 minutę

Aby uprościć kolejne działania, dostosuj zmienne w poniższych poleceniach do swoich wartości (dostosowanie zmień dla każdego węzła PostgreSQL):

Wartość Zmienna Definicja
PSQL_CERT Nowy certyfikat węzła PostgreSQL.
PSQL_KEY Klucz powiązany z nowym certyfikatem węzła PostgreSQL.
PSQL_CA Certyfikat głównego urzędu certyfikacji, który został użyty do wygenerowania certyfikatu węzła PostgreSQL.

Połącz się przez SSH jako root z węzłem PostgreSQL, którego certyfikaty chcesz zaktualizować, i wykonaj następujące polecenia, aby zastąpić certyfikaty:

 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

Aby zakończyć zmianę certyfikatów, musisz ponownie uruchomić węzeł PostgreSQL:

1
reboot