Към съдържанието

Подновяване на сертификатите на клъстера PostgreSQL

Подготовка

Подновяване на сертификата

Преди да извършите каквито и да е действия на възлите на клъстера PostgreSQL, подгответе нови сертификати за всеки от възлите на клъстера. Напомняме, че сертификатите трябва да отговарят на няколко ограничения, посочени в предварителните изисквания за клъстера PostgreSQL.

Ако искате да направите промяната по време на работа, без да засягате производствената среда, трябва да бъдат изпълнени следните условия:

  • Сертифициращият орган не е бил подновяван след последното генериране на сертификатите на възлите PostgreSQL
  • Сертифициращият орган няма да изтече по време на срока на валидност на новите сертификати
  • Все още можете да генерирате и подписвате сертификати със същия сертифициращ орган, който е бил използван при генерирането на предишните сертификати на възлите PostgreSQL
  • Сертификатите на възлите PostgreSQL все още не са изтекли

Ако тези условия са изпълнени, можете да обмислите подновяване на сертификатите по време на работа, без да прекъсвате производствената среда.

За да генерирате отново сертификатите с помощта на инфраструктурата PKI с openssl, описана по избор в документацията за инсталиране на клъстера PostgreSQL, трябва да използвате повторно ключа на сертифициращия орган и след това да изпълните отново командите за генериране на сертификати.

Ако не е възможно сертификатите да бъдат подновени по време на работа и използвате инфраструктура PKI чрез openssl, препоръчваме да създадете нова.

Подготовка на сертификатите

Трябва да изпратите в /tmp/ на всеки от възлите на PostgreSQL сертификата на главния сертифициращ орган с разширение .crt.

Трябва също да изпратите в /tmp/ на всеки от възлите на PostgreSQL сертификата и свързания с него частен ключ. Ако разполагате само с един файл .p12, изпълнете следните команди, за да извлечете сертификата (psql.crt) и частния ключ (psql.key):

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

В предходните команди заменете P12_CERT с името на вашия файл със сертификат .p12.

Подновяване на сертификатите

Предупреждение!

Ако можете и желаете да извършите актуализиране на сертификатите по време на работа с минимално прекъсване на производствената среда (1 минута + излизане на потребителите), трябва да спазвате следното:

  • Подновявайте сертификатите последователно на всеки възел
  • Подновявайте сертификатите само на възел REPLICA (вижте как да извлечете информация за възела LEADER)
  • Винаги поддържайте поне два работещи възела на PostgreSQL и работете по третия
  • За да работите по възела LEADER, превключете LEADER към друг възел; това действие ще доведе до излизане на потребителите и до недостъпност на платформата за около 1 минута

За да опростите следващите действия, персонализирайте променливите в командите по-долу със своите стойности (променяйте персонализацията за всеки възел на PostgreSQL):

Стойност Променлива Дефиниция
PSQL_CERT Нов сертификат на възела на PostgreSQL.
PSQL_KEY Ключ, свързан с новия сертификат на възела на PostgreSQL.
PSQL_CA Сертификат на главния сертифициращ орган, който е използван за генериране на сертификата на възела на PostgreSQL.

Свържете се чрез SSH като root с възела на PostgreSQL, чиито сертификати искате да актуализирате, и изпълнете следните команди, за да замените сертификатите:

 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

За да финализирате промените в сертификатите, трябва да рестартирате възела на PostgreSQL:

1
reboot