Pereiti prie turinio

PostgreSQL klasterio sertifikatų tikrinimas

Diegimo metu, atnaujinant arba tiesiog norint sužinoti, kada baigiasi PostgreSQL klasterio sertifikatų galiojimas, gali būti naudinga išnagrinėti sugeneruotų sertifikatų turinį.

PostgreSQL klasteris naudoja šiuos sertifikatus:

 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

Šakninės sertifikavimo institucijos sertifikatas. Tas pats sertifikatas yra kataloguose /etc/patroni/ ir /etc/etcd/.

client.crt

PostgreSQL mazgo sertifikatas. Tas pats sertifikatas yra kataloguose /etc/patroni/ ir /etc/etcd/. Jį patroni ir etcd naudoja kliento ryšiams tarp mazgų.

client.key

Raktas, susietas su sertifikatu client.crt.

peer.crt

Tas pats sertifikatas kaip client.crt. Jis naudojamas vidiniams etcd ryšiams tarp mazgų.

peer.key

Tas pats raktas kaip client.key.

Taigi iš viso yra trys elementai:

  • šakninės sertifikavimo institucijos sertifikatas (/etc/etcd/ca.crt, /etc/patroni/ca.crt);
  • PostgreSQL mazgo sertifikatas (/etc/etcd/client.crt, /etc/etcd/peer.crt, /etc/patroni/client.crt);
  • raktas, susietas su PostgreSQL mazgo sertifikatu (/etc/etcd/client.key, /etc/etcd/peer.key, /etc/patroni/client.key).

Sertifikato galiojimo pabaigos datos tikrinimas

Norėdami patikrinti sertifikato galiojimo pabaigos datą, naudokite toliau pateiktą komandą.

Galite pritaikyti šios komandos kintamąjį:

Pasirinktinė reikšmė Kintamasis Komentaras
EXPIRY_CERT Sertifikato, kurio galiojimo pabaigos datą reikia patikrinti, kelias.

Arba užpildykite lauką vienu iš klasterio sertifikatų:

1
openssl x509 -in EXPIRY_CERT -noout -enddate

Jei galiojimo pabaigos data jau praėjo, sertifikatas laikomas negaliojančiu.

Perspėjimas

Jei sertifikatą išdavusios sertifikavimo institucijos galiojimas pasibaigė, sertifikatas taip pat laikomas negaliojančiu. Todėl patikrinkite ir sertifikavimo institucijos galiojimo pabaigos datą.

Pavyzdys

Norėdami patikrinti sertifikato /etc/patroni/client.crt galiojimo pabaigos datą, naudojame šią komandą:

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

Išvestis panaši į šią:

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

Šiuo atveju sertifikato galiojimas baigiasi 2030 m. gruodžio 18 d. 14:04:09.

Sertifikato Subject Alternative Names tikrinimas

Norėdami patikrinti sertifikato SAN (Subject Alternative Names), t. y. vardus ir IP adresus, kuriems jis galioja, naudokite toliau pateiktą komandą.

Galite pritaikyti šios komandos kintamąjį:

Pasirinktinė reikšmė Kintamasis Komentaras
SAN_CERT Sertifikato, kurio SAN reikia patikrinti, kelias.

Arba užpildykite lauką vienu iš mazgų sertifikatų:

1
openssl x509 -in SAN_CERT -noout -ext subjectAltName

Jei DNS vardo arba IP adreso, naudojamo jungiantis prie mazgo, nėra jo sertifikato SAN sąraše, ryšys laikomas negaliojančiu. Taip pat, kai mazgas užmezga ryšį su kitu mazgu, o jo pateiktas sertifikatas neatitinka jo paties DNS vardo ar IP adreso, nuotolinis mazgas ryšį atmeta.

Pavyzdys

Norėdami patikrinti sertifikato /etc/etcd/peer.crt SAN, naudojame šią komandą:

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

Komanda grąžina panašų rezultatą:

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

Šiuo atveju sertifikatas apima DNS vardus PSQL_VIP ir PSQL_2, taip pat IP adresus 192.168.1.4 ir 192.168.1.2.

Sertifikatą išdavusios sertifikavimo institucijos tikrinimas

Generuojant sertifikatą, į jį galima įtraukti X509v3 plėtinį Authority Key Identifier. Šiame plėtinyje gali būti saugoma jo išdavėjo viešojo rakto maišos reikšmė, atitinkanti išdavėjo X509v3 plėtinio Subject Key Identifier turinį.

Informacija

Sertifikatai, sugeneruoti pagal PostgreSQL klasterio diegimo dokumentaciją, turi plėtinius Authority Key Identifier ir Subject Key Identifier.

Jei šie plėtiniai yra, galite gauti sertifikato išdavėjo viešojo rakto maišos reikšmę ir palyginti ją su maišos reikšme, esančia CA, kuri turėjo išduoti sertifikatą, plėtinyje Subject Key Identifier, kad įsitikintumėte, jog tai tinkama CA.

Norėdami gauti sertifikato plėtinio Authority Key Identifier reikšmę, naudokite toliau pateiktą komandą.

Galite pritaikyti šios komandos kintamąjį:

Pasirinktinė reikšmė Kintamasis Komentaras
ISSUED_CERT Sertifikato, kurio išdavėją reikia patikrinti, kelias.

Arba užpildykite lauką vienu iš mazgų sertifikatų:

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

Informacija

Parinktis -issuer gauna išduodančiojo sertifikato CN.

Norėdami gauti sertifikato plėtinio Subject Key Identifier reikšmę, naudokite toliau pateiktą komandą.

Galite pritaikyti šios komandos kintamąjį:

Pasirinktinė reikšmė Kintamasis Komentaras
ISSUER_CA Sertifikavimo institucijos, kuri laikoma išdavėja, sertifikato kelias.

Arba užpildykite lauką vienu iš sertifikavimo institucijos sertifikatų:

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

Informacija

Parinktis -subject gauna sertifikato CN.

Pavyzdys

Norime patikrinti, ar CA, pasirašiusi sertifikatą faile /etc/patroni/client.crt, tikrai yra ta, kuri yra faile /etc/patroni/ca.crt.
Pirmiausia šia komanda gauname sertifikato /etc/patroni/client.crt X509v3 plėtinio Authority Key Identifier turinį:

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

Ji grąžina:

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

Tada šia komanda gauname CA /etc/patroni/ca.crt X509v3 plėtinio Subject Key Identifier turinį:

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

Ji grąžina:

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

Palyginus abi išvestis matyti, kad Key Identifier ir CN yra identiški: sertifikatas faile /etc/patroni/ca.crt tikrai yra CA, pasirašiusi sertifikatą faile /etc/patroni/client.crt.