Verificarea certificatelor clusterului PostgreSQL¶
În timpul instalării, al unei reînnoiri sau pur și simplu pentru a afla când expiră certificatele clusterului PostgreSQL, poate fi util să examinați conținutul certificatelor generate.
Certificatele utilizate de clusterul PostgreSQL sunt următoarele:
1 2 3 4 5 6 7 8 9 10 11 | |
ca.crt-
Certificatul autorității de certificare rădăcină. Același certificat este prezent în directoarele
/etc/patroni/și/etc/etcd/. client.crt-
Certificatul nodului PostgreSQL. Același certificat este prezent în directoarele
/etc/patroni/și/etc/etcd/. Este utilizat depatronișietcdpentru comunicațiile client dintre noduri. client.key-
Cheia asociată certificatului
client.crt. peer.crt-
Același certificat ca
client.crt. Este utilizat pentru comunicațiile interneetcddintre noduri. peer.key-
Aceeași cheie ca
client.key.
Există, prin urmare, trei elemente în total:
- certificatul autorității de certificare rădăcină (
/etc/etcd/ca.crt,/etc/patroni/ca.crt); - certificatul nodului PostgreSQL (
/etc/etcd/client.crt,/etc/etcd/peer.crt,/etc/patroni/client.crt); - cheia asociată certificatului nodului PostgreSQL (
/etc/etcd/client.key,/etc/etcd/peer.key,/etc/patroni/client.key).
Verificarea datei de expirare a unui certificat¶
Pentru a verifica data de expirare a unui certificat, utilizați comanda de mai jos.
Puteți personaliza variabila pentru comanda următoare:
| Valoare personalizată | Variabilă | Comentariu |
|---|---|---|
EXPIRY_CERT |
Calea certificatului a cărui dată de expirare trebuie verificată. |
Sau completați câmpul cu unul dintre certificatele clusterului:
1 | |
Dacă data de expirare a trecut, certificatul este considerat invalid.
Avertisment
Dacă autoritatea de certificare care a emis certificatul a expirat, certificatul este de asemenea considerat invalid. Verificați, prin urmare, și data de expirare a autorității de certificare.
Exemplu
Pentru a verifica data de expirare a certificatului /etc/patroni/client.crt, utilizăm următoarea comandă:
1 | |
Rezultatul este similar cu acesta:
1 | |
Aici, certificatul expiră pe 18 decembrie 2030, la ora 14:04:09.
Verificarea numelor alternative (SAN) ale unui certificat¶
Pentru a verifica SAN-urile (Subject Alternative Names) ale unui certificat, adică numele și adresele IP pentru care acesta este valabil, utilizați comanda de mai jos.
Puteți personaliza variabila pentru comanda următoare:
| Valoare personalizată | Variabilă | Comentariu |
|---|---|---|
SAN_CERT |
Calea certificatului ale cărui SAN-uri trebuie verificate. |
Sau completați câmpul cu unul dintre certificatele nodului:
1 | |
Dacă numele DNS sau adresa IP utilizate pentru conectarea la un nod nu figurează în SAN-urile certificatului său, conexiunea este considerată invalidă. De asemenea, atunci când un nod deschide o conexiune către un alt nod, dacă certificatul pe care îl prezintă nu corespunde propriului său nume DNS sau propriei sale adrese IP, nodul la distanță respinge conexiunea.
Exemplu
Pentru a verifica SAN-urile certificatului /etc/etcd/peer.crt, utilizăm următoarea comandă:
1 | |
Comanda returnează un rezultat similar cu acesta:
1 2 | |
Aici, certificatul acoperă numele DNS PSQL_VIP și PSQL_2, precum și adresele IP 192.168.1.4 și 192.168.1.2.
Verificarea autorității de certificare care a emis un certificat¶
Atunci când este generat un certificat, i se poate adăuga extensia X509v3 Authority Key Identifier. Această extensie poate stoca hash-ul cheii publice a emitentului său, care corespunde conținutului extensiei X509v3 Subject Key Identifier a emitentului.
Info
Certificatele generate urmând documentația de instalare a clusterului PostgreSQL au extensiile Authority Key Identifier și Subject Key Identifier.
Dacă aceste extensii sunt prezente, puteți obține hash-ul cheii publice a emitentului unui certificat, apoi îl puteți compara cu hash-ul din extensia Subject Key Identifier a CA care se presupune că a emis certificatul, pentru a confirma că este cea corectă.
Pentru a obține valoarea extensiei Authority Key Identifier a unui certificat, utilizați comanda de mai jos.
Puteți personaliza variabila pentru comanda următoare:
| Valoare personalizată | Variabilă | Comentariu |
|---|---|---|
ISSUED_CERT |
Calea certificatului al cărui emitent trebuie verificat. |
Sau completați câmpul cu unul dintre certificatele nodului:
1 | |
Info
Opțiunea -issuer permite obținerea CN-ului certificatului emitent.
Pentru a obține valoarea extensiei Subject Key Identifier a unui certificat, utilizați comanda de mai jos.
Puteți personaliza variabila pentru comanda următoare:
| Valoare personalizată | Variabilă | Comentariu |
|---|---|---|
ISSUER_CA |
Calea certificatului autorității de certificare despre care se presupune că este emitentul. |
Sau completați câmpul cu unul dintre certificatele autorității de certificare:
1 | |
Info
Opțiunea -subject permite obținerea CN-ului certificatului.
Exemplu
Dorim să verificăm că CA care a semnat certificatul din fișierul /etc/patroni/client.crt este într-adevăr cea din fișierul /etc/patroni/ca.crt.
Obținem mai întâi conținutul extensiei X509v3 Authority Key Identifier a certificatului /etc/patroni/client.crt cu următoarea comandă:
1 | |
Ceea ce returnează:
1 2 3 | |
Obținem apoi conținutul extensiei X509v3 Subject Key Identifier a CA /etc/patroni/ca.crt cu următoarea comandă:
1 | |
Ceea ce returnează:
1 2 3 | |
Comparând cele două rezultate, constatăm că Key Identifier și CN sunt identice: certificatul din fișierul /etc/patroni/ca.crt este într-adevăr CA care a semnat certificatul din fișierul /etc/patroni/client.crt.