Preskočiť na obsah

Kontrola certifikátov clustera PostgreSQL

Počas inštalácie, pri obnovení alebo jednoducho na zistenie, kedy uplynie platnosť certifikátov clustera PostgreSQL, môže byť užitočné preskúmať obsah vygenerovaných certifikátov.

Cluster PostgreSQL používa tieto certifikáty:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
/etc/etcd/
├── ca.crt
├── client.crt
├── client.key
├── peer.crt
└── peer.key

/etc/patroni/
├── ca.crt
├── client.crt
└── client.key
ca.crt

Certifikát koreňovej certifikačnej autority. Rovnaký certifikát sa nachádza v adresároch /etc/patroni/ a /etc/etcd/.

client.crt

Certifikát uzla PostgreSQL. Rovnaký certifikát sa nachádza v adresároch /etc/patroni/ a /etc/etcd/. Používajú ho patroni a etcd na klientsku komunikáciu medzi uzlami.

client.key

Kľúč priradený k certifikátu client.crt.

peer.crt

Rovnaký certifikát ako client.crt. Používa sa na internú komunikáciu etcd medzi uzlami.

peer.key

Rovnaký kľúč ako client.key.

Celkovo ide teda o tri položky:

  • certifikát koreňovej certifikačnej autority (/etc/etcd/ca.crt, /etc/patroni/ca.crt);
  • certifikát uzla PostgreSQL (/etc/etcd/client.crt, /etc/etcd/peer.crt, /etc/patroni/client.crt);
  • kľúč priradený k certifikátu uzla PostgreSQL (/etc/etcd/client.key, /etc/etcd/peer.key, /etc/patroni/client.key).

Kontrola dátumu uplynutia platnosti certifikátu

Na kontrolu dátumu uplynutia platnosti certifikátu použite príkaz nižšie.

Premennú pre nasledujúci príkaz môžete prispôsobiť:

Vlastná hodnota Premenná Komentár
EXPIRY_CERT Cesta k certifikátu, ktorého dátum uplynutia platnosti chcete skontrolovať.

Alebo vyplňte pole jedným z certifikátov clustera:

1
openssl x509 -in EXPIRY_CERT -noout -enddate

Ak je dátum uplynutia platnosti v minulosti, certifikát sa považuje za neplatný.

Upozornenie

Ak uplynula platnosť certifikačnej autority, ktorá certifikát vydala, certifikát sa tiež považuje za neplatný. Preto skontrolujte aj dátum uplynutia platnosti certifikačnej autority.

Príklad

Na kontrolu dátumu uplynutia platnosti certifikátu /etc/patroni/client.crt použijeme nasledujúci príkaz:

1
openssl x509 -in /etc/patroni/client.crt -noout -enddate

Výstup je podobný tomuto:

1
notAfter=Dec 18 14:04:09 2030 GMT

Tu platnosť certifikátu uplynie 18. decembra 2030 o 14:04:09.

Kontrola alternatívnych názvov subjektu (SAN) certifikátu

Na kontrolu názvov SAN (Subject Alternative Names) certifikátu, teda názvov a IP adries, pre ktoré je platný, použite príkaz nižšie.

Premennú pre nasledujúci príkaz môžete prispôsobiť:

Vlastná hodnota Premenná Komentár
SAN_CERT Cesta k certifikátu, ktorého názvy SAN chcete skontrolovať.

Alebo vyplňte pole jedným z certifikátov uzla:

1
openssl x509 -in SAN_CERT -noout -ext subjectAltName

Ak názov DNS alebo IP adresa použitá na pripojenie k uzlu nie je uvedená v názvoch SAN jeho certifikátu, pripojenie sa považuje za neplatné. Podobne, keď uzol otvára pripojenie k inému uzlu a certifikát, ktorý predkladá, nezodpovedá jeho vlastnému názvu DNS alebo IP adrese, vzdialený uzol pripojenie odmietne.

Príklad

Na kontrolu názvov SAN certifikátu /etc/etcd/peer.crt použijeme nasledujúci príkaz:

1
openssl x509 -in /etc/etcd/peer.crt -noout -ext subjectAltName

Príkaz vráti výsledok podobný tomuto:

1
2
X509v3 Subject Alternative Name:
    DNS:PSQL_VIP, DNS:PSQL_2, IP Address:192.168.1.4, IP Address:192.168.1.2

Tu certifikát pokrýva názvy DNS PSQL_VIP a PSQL_2, ako aj IP adresy 192.168.1.4 a 192.168.1.2.

Kontrola, ktorá certifikačná autorita vydala certifikát

Pri generovaní certifikátu doň možno pridať rozšírenie X509v3 Authority Key Identifier. Toto rozšírenie môže uchovávať hash verejného kľúča vydavateľa, ktorý zodpovedá obsahu rozšírenia X509v3 Subject Key Identifier vydavateľa.

Informácie

Certifikáty vygenerované podľa dokumentácie k inštalácii clustera PostgreSQL obsahujú rozšírenia Authority Key Identifier a Subject Key Identifier.

Ak sú tieto rozšírenia prítomné, môžete získať hash verejného kľúča vydavateľa certifikátu a potom ho porovnať s hashom v rozšírení Subject Key Identifier certifikačnej autority (CA), ktorá mala certifikát vydať, a potvrdiť tak, že ide o správnu autoritu.

Na získanie hodnoty rozšírenia Authority Key Identifier certifikátu použite príkaz nižšie.

Premennú pre nasledujúci príkaz môžete prispôsobiť:

Vlastná hodnota Premenná Komentár
ISSUED_CERT Cesta k certifikátu, ktorého vydavateľa chcete skontrolovať.

Alebo vyplňte pole jedným z certifikátov uzla:

1
openssl x509 -in ISSUED_CERT -noout -issuer -ext authorityKeyIdentifier

Informácie

Možnosť -issuer získa CN certifikátu vydavateľa.

Na získanie hodnoty rozšírenia Subject Key Identifier certifikátu použite príkaz nižšie.

Premennú pre nasledujúci príkaz môžete prispôsobiť:

Vlastná hodnota Premenná Komentár
ISSUER_CA Cesta k certifikátu certifikačnej autority, ktorá sa považuje za vydavateľa.

Alebo vyplňte pole jedným z certifikátov certifikačnej autority:

1
openssl x509 -in ISSUER_CA -noout -subject -ext subjectKeyIdentifier

Informácie

Možnosť -subject získa CN certifikátu.

Príklad

Chceme overiť, či certifikačná autorita, ktorá podpísala certifikát v súbore /etc/patroni/client.crt, je skutočne tá zo súboru /etc/patroni/ca.crt.
Najprv získame obsah rozšírenia X509v3 Authority Key Identifier certifikátu /etc/patroni/client.crt nasledujúcim príkazom:

1
openssl x509 -in /etc/patroni/client.crt -noout -issuer -ext authorityKeyIdentifier

Príkaz vráti:

1
2
3
issuer=CN = BDD-ROOT-CA
X509v3 Authority Key Identifier:
    38:B3:EC:CD:20:90:80:A4:B3:60:F8:E5:7B:98:92:3B:7D:26:06:2B

Potom získame obsah rozšírenia X509v3 Subject Key Identifier certifikačnej autority /etc/patroni/ca.crt nasledujúcim príkazom:

1
openssl x509 -in /etc/patroni/ca.crt -noout -subject -ext subjectKeyIdentifier

Príkaz vráti:

1
2
3
subject=CN = BDD-ROOT-CA
X509v3 Subject Key Identifier:
    38:B3:EC:CD:20:90:80:A4:B3:60:F8:E5:7B:98:92:3B:7D:26:06:2B

Porovnanie oboch výstupov ukazuje, že Key Identifier a CN sú zhodné: certifikát v súbore /etc/patroni/ca.crt je skutočne certifikačná autorita, ktorá podpísala certifikát v súbore /etc/patroni/client.crt.