Проверка на сертификатите на клъстера PostgreSQL¶
По време на инсталирането, при подновяване или просто за да разберете кога изтичат сертификатите на клъстера PostgreSQL, може да е полезно да разгледате съдържанието на генерираните сертификати.
Клъстерът PostgreSQL използва следните сертификати:
1 2 3 4 5 6 7 8 9 10 11 | |
ca.crt-
Сертификат на главния сертифициращ орган. Същият сертификат се намира в директориите
/etc/patroni/и/etc/etcd/. client.crt-
Сертификат на възела на PostgreSQL. Същият сертификат се намира в директориите
/etc/patroni/и/etc/etcd/. Използва се отpatroniиetcdза клиентската комуникация между възлите. client.key-
Ключ, свързан със сертификата
client.crt. peer.crt-
Същият сертификат като
client.crt. Използва се за вътрешната комуникация наetcdмежду възлите. peer.key-
Същият ключ като
client.key.
Следователно има общо три елемента:
- сертификатът на главния сертифициращ орган (
/etc/etcd/ca.crt,/etc/patroni/ca.crt); - сертификатът на възела на PostgreSQL (
/etc/etcd/client.crt,/etc/etcd/peer.crt,/etc/patroni/client.crt); - ключът, свързан със сертификата на възела на PostgreSQL (
/etc/etcd/client.key,/etc/etcd/peer.key,/etc/patroni/client.key).
Проверка на датата на изтичане на сертификат¶
За да проверите датата на изтичане на сертификат, използвайте командата по-долу.
Можете да персонализирате променливата за следната команда:
| Персонализирана стойност | Променлива | Коментар |
|---|---|---|
EXPIRY_CERT |
Път до сертификата, чиято дата на изтичане да се провери. |
Или попълнете полето с един от сертификатите на клъстера:
1 | |
Ако датата на изтичане е минала, сертификатът се счита за невалиден.
Предупреждение
Ако срокът на сертифициращия орган, издал сертификата, е изтекъл, сертификатът също се счита за невалиден. Затова проверете и датата на изтичане на сертифициращия орган.
Пример
За да проверим датата на изтичане на сертификата /etc/patroni/client.crt, използваме следната команда:
1 | |
Резултатът е подобен на следния:
1 | |
Тук сертификатът изтича на 18 декември 2030 г. в 14:04:09 ч.
Проверка на алтернативните имена на субекта (SAN) на сертификат¶
За да проверите SAN (Subject Alternative Names) на сертификат, т.е. имената и IP адресите, за които той е валиден, използвайте командата по-долу.
Можете да персонализирате променливата за следната команда:
| Персонализирана стойност | Променлива | Коментар |
|---|---|---|
SAN_CERT |
Път до сертификата, чиито SAN да се проверят. |
Или попълнете полето с един от сертификатите на възела:
1 | |
Ако DNS името или IP адресът, използвани за свързване с възел, не са сред SAN на неговия сертификат, връзката се счита за невалидна. По същия начин, когато възел отваря връзка към друг възел и представеният от него сертификат не съответства на собственото му DNS име или IP адрес, отдалеченият възел отхвърля връзката.
Пример
За да проверим SAN на сертификата /etc/etcd/peer.crt, използваме следната команда:
1 | |
Командата връща резултат, подобен на следния:
1 2 | |
Тук сертификатът обхваща DNS имената PSQL_VIP и PSQL_2, както и IP адресите 192.168.1.4 и 192.168.1.2.
Проверка кой сертифициращ орган е издал даден сертификат¶
При генериране на сертификат към него може да бъде добавено разширението X509v3 Authority Key Identifier. Това разширение може да съхранява хеша на публичния ключ на издателя, който съответства на съдържанието на разширението X509v3 Subject Key Identifier на издателя.
Информация
Сертификатите, генерирани съгласно документацията за инсталиране на клъстера PostgreSQL, имат разширенията Authority Key Identifier и Subject Key Identifier.
Ако тези разширения са налице, можете да извлечете хеша на публичния ключ на издателя на сертификата и след това да го сравните с хеша в разширението Subject Key Identifier на сертифициращия орган, който би трябвало да е издал сертификата, за да потвърдите, че това е правилният орган.
За да извлечете стойността на разширението Authority Key Identifier на сертификат, използвайте командата по-долу.
Можете да персонализирате променливата за следната команда:
| Персонализирана стойност | Променлива | Коментар |
|---|---|---|
ISSUED_CERT |
Път до сертификата, чийто издател да се провери. |
Или попълнете полето с един от сертификатите на възела:
1 | |
Информация
Опцията -issuer извлича CN на издаващия сертификат.
За да извлечете стойността на разширението Subject Key Identifier на сертификат, използвайте командата по-долу.
Можете да персонализирате променливата за следната команда:
| Персонализирана стойност | Променлива | Коментар |
|---|---|---|
ISSUER_CA |
Път до сертификата на сертифициращия орган, за който се предполага, че е издателят. |
Или попълнете полето с един от сертификатите на сертифициращия орган:
1 | |
Информация
Опцията -subject извлича CN на сертификата.
Пример
Искаме да проверим дали сертифициращият орган, подписал сертификата във файла /etc/patroni/client.crt, наистина е този във файла /etc/patroni/ca.crt.
Първо извличаме съдържанието на разширението X509v3 Authority Key Identifier на сертификата /etc/patroni/client.crt със следната команда:
1 | |
Командата връща:
1 2 3 | |
След това извличаме съдържанието на разширението X509v3 Subject Key Identifier на сертифициращия орган /etc/patroni/ca.crt със следната команда:
1 | |
Командата връща:
1 2 3 | |
Сравнението на двата резултата показва, че Key Identifier и CN са идентични: сертификатът във файла /etc/patroni/ca.crt наистина е сертифициращият орган, подписал сертификата във файла /etc/patroni/client.crt.