Pāriet uz saturu

PostgreSQL klastera sertifikātu pārbaude

Instalēšanas laikā, atjaunošanas laikā vai vienkārši, lai noskaidrotu, kad beidzas PostgreSQL klastera sertifikātu derīgums, var būt noderīgi pārbaudīt ģenerēto sertifikātu saturu.

PostgreSQL klasteris izmanto šādus sertifikātus:

 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

Saknes sertificēšanas iestādes sertifikāts. Tas pats sertifikāts atrodas direktorijos /etc/patroni/ un /etc/etcd/.

client.crt

PostgreSQL mezgla sertifikāts. Tas pats sertifikāts atrodas direktorijos /etc/patroni/ un /etc/etcd/. To izmanto patroni un etcd klienta saziņai starp mezgliem.

client.key

Atslēga, kas saistīta ar sertifikātu client.crt.

peer.crt

Tas pats sertifikāts, kas client.crt. To izmanto etcd iekšējai saziņai starp mezgliem.

peer.key

Tā pati atslēga, kas client.key.

Tātad kopumā ir trīs elementi:

  • saknes sertificēšanas iestādes sertifikāts (/etc/etcd/ca.crt, /etc/patroni/ca.crt);
  • PostgreSQL mezgla sertifikāts (/etc/etcd/client.crt, /etc/etcd/peer.crt, /etc/patroni/client.crt);
  • atslēga, kas saistīta ar PostgreSQL mezgla sertifikātu (/etc/etcd/client.key, /etc/etcd/peer.key, /etc/patroni/client.key).

Sertifikāta derīguma beigu datuma pārbaude

Lai pārbaudītu sertifikāta derīguma beigu datumu, izmantojiet tālāk norādīto komandu.

Tālāk norādītajai komandai varat pielāgot mainīgo:

Pielāgotā vērtība Mainīgais Komentārs
EXPIRY_CERT Ceļš uz sertifikātu, kura derīguma beigu datums jāpārbauda.

Vai arī aizpildiet lauku ar kādu no klastera sertifikātiem:

1
openssl x509 -in EXPIRY_CERT -noout -enddate

Ja derīguma beigu datums ir pagājis, sertifikāts tiek uzskatīts par nederīgu.

Brīdinājums

Ja sertifikātu izdevušās sertificēšanas iestādes derīgums ir beidzies, arī sertifikāts tiek uzskatīts par nederīgu. Tāpēc pārbaudiet arī sertificēšanas iestādes derīguma beigu datumu.

Piemērs

Lai pārbaudītu sertifikāta /etc/patroni/client.crt derīguma beigu datumu, izmantojam šādu komandu:

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

Izvade ir līdzīga šai:

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

Šajā gadījumā sertifikāta derīgums beidzas 2030. gada 18. decembrī plkst. 14:04:09.

Sertifikāta Subject Alternative Names pārbaude

Lai pārbaudītu sertifikāta SAN (Subject Alternative Names), t. i., nosaukumus un IP adreses, kurām tas ir derīgs, izmantojiet tālāk norādīto komandu.

Tālāk norādītajai komandai varat pielāgot mainīgo:

Pielāgotā vērtība Mainīgais Komentārs
SAN_CERT Ceļš uz sertifikātu, kura SAN jāpārbauda.

Vai arī aizpildiet lauku ar kādu no mezglu sertifikātiem:

1
openssl x509 -in SAN_CERT -noout -ext subjectAltName

Ja DNS nosaukums vai IP adrese, ko izmanto savienojuma izveidei ar mezglu, nav iekļauta tā sertifikāta SAN, savienojums tiek uzskatīts par nederīgu. Tāpat, ja mezgls izveido savienojumu ar citu mezglu un tā uzrādītais sertifikāts neatbilst tā paša DNS nosaukumam vai IP adresei, attālais mezgls savienojumu noraida.

Piemērs

Lai pārbaudītu sertifikāta /etc/etcd/peer.crt SAN, izmantojam šādu komandu:

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

Komanda atgriež rezultātu, kas līdzīgs šim:

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

Šajā gadījumā sertifikāts aptver DNS nosaukumus PSQL_VIP un PSQL_2, kā arī IP adreses 192.168.1.4 un 192.168.1.2.

Pārbaude, kura sertificēšanas iestāde izdevusi sertifikātu

Ģenerējot sertifikātu, tam var pievienot X509v3 paplašinājumu Authority Key Identifier. Šajā paplašinājumā var glabāt tā izdevēja publiskās atslēgas jaucējkodu, kas atbilst izdevēja X509v3 paplašinājuma Subject Key Identifier saturam.

Informācija

Sertifikātiem, kas ģenerēti saskaņā ar PostgreSQL klastera instalēšanas dokumentāciju, ir paplašinājumi Authority Key Identifier un Subject Key Identifier.

Ja šie paplašinājumi ir pieejami, varat izgūt sertifikāta izdevēja publiskās atslēgas jaucējkodu un pēc tam salīdzināt to ar jaucējkodu tās CA paplašinājumā Subject Key Identifier, kurai būtu vajadzējis izdot sertifikātu, lai pārliecinātos, ka tā ir pareizā.

Lai izgūtu sertifikāta paplašinājuma Authority Key Identifier vērtību, izmantojiet tālāk norādīto komandu.

Tālāk norādītajai komandai varat pielāgot mainīgo:

Pielāgotā vērtība Mainīgais Komentārs
ISSUED_CERT Ceļš uz sertifikātu, kura izdevējs jāpārbauda.

Vai arī aizpildiet lauku ar kādu no mezglu sertifikātiem:

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

Informācija

Opcija -issuer izgūst izdevēja sertifikāta CN.

Lai izgūtu sertifikāta paplašinājuma Subject Key Identifier vērtību, izmantojiet tālāk norādīto komandu.

Tālāk norādītajai komandai varat pielāgot mainīgo:

Pielāgotā vērtība Mainīgais Komentārs
ISSUER_CA Ceļš uz tās sertificēšanas iestādes sertifikātu, kura tiek uzskatīta par izdevēju.

Vai arī aizpildiet lauku ar kādu no sertificēšanas iestāžu sertifikātiem:

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

Informācija

Opcija -subject izgūst sertifikāta CN.

Piemērs

Mēs vēlamies pārbaudīt, vai CA, kas parakstījusi sertifikātu failā /etc/patroni/client.crt, patiešām ir tā, kas atrodas failā /etc/patroni/ca.crt.
Vispirms ar šo komandu izgūstam sertifikāta /etc/patroni/client.crt X509v3 paplašinājuma Authority Key Identifier saturu:

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

Komanda atgriež:

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

Pēc tam ar šo komandu izgūstam CA /etc/patroni/ca.crt X509v3 paplašinājuma Subject Key Identifier saturu:

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

Komanda atgriež:

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

Abu izvažu salīdzinājums parāda, ka Key Identifier un CN ir identiski: sertifikāts failā /etc/patroni/ca.crt patiešām ir CA, kas parakstījusi sertifikātu failā /etc/patroni/client.crt.