Μετάβαση στο περιεχόμενο

Έλεγχος των πιστοποιητικών του συμπλέγματος PostgreSQL

Κατά την εγκατάσταση, κατά μια ανανέωση ή απλώς για να μάθετε πότε λήγουν τα πιστοποιητικά του συμπλέγματος PostgreSQL, μπορεί να είναι χρήσιμο να εξετάσετε το περιεχόμενο των πιστοποιητικών που δημιουργήθηκαν.

Τα πιστοποιητικά που χρησιμοποιεί το σύμπλεγμα PostgreSQL είναι τα εξής:

 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

Πιστοποιητικό της αρχής έκδοσης πιστοποιητικών ρίζας. Το ίδιο πιστοποιητικό υπάρχει στους καταλόγους /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
openssl x509 -in EXPIRY_CERT -noout -enddate

Εάν η ημερομηνία λήξης έχει παρέλθει, το πιστοποιητικό θεωρείται μη έγκυρο.

Προειδοποίηση

Εάν η αρχή έκδοσης πιστοποιητικών που εξέδωσε το πιστοποιητικό έχει λήξει, το πιστοποιητικό θεωρείται επίσης μη έγκυρο. Επομένως, ελέγξτε και την ημερομηνία λήξης της αρχής έκδοσης πιστοποιητικών.

Παράδειγμα

Για να ελέγξουμε την ημερομηνία λήξης του πιστοποιητικού /etc/patroni/client.crt, χρησιμοποιούμε την ακόλουθη εντολή:

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

Η έξοδος είναι παρόμοια με την ακόλουθη:

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

Εδώ, το πιστοποιητικό λήγει στις 18 Δεκεμβρίου 2030, ώρα 14:04:09.

Έλεγχος των εναλλακτικών ονομάτων θέματος (Subject Alternative Names) ενός πιστοποιητικού

Για να ελέγξετε τα SAN (Subject Alternative Names, εναλλακτικά ονόματα θέματος) ενός πιστοποιητικού, δηλαδή τα ονόματα και τις διευθύνσεις IP για τα οποία είναι έγκυρο, χρησιμοποιήστε την παρακάτω εντολή.

Μπορείτε να προσαρμόσετε τη μεταβλητή της παρακάτω εντολής:

Προσαρμοσμένη τιμή Μεταβλητή Σχόλιο
SAN_CERT Διαδρομή του πιστοποιητικού του οποίου θα ελεγχθούν τα SAN.

Ή συμπληρώστε το πεδίο με ένα από τα πιστοποιητικά των κόμβων:

1
openssl x509 -in SAN_CERT -noout -ext subjectAltName

Εάν το όνομα DNS ή η διεύθυνση IP που χρησιμοποιείται για τη σύνδεση σε έναν κόμβο δεν περιλαμβάνεται στα SAN του πιστοποιητικού του, η σύνδεση θεωρείται μη έγκυρη. Ομοίως, όταν ένας κόμβος ανοίγει σύνδεση προς άλλον κόμβο, εάν το πιστοποιητικό που παρουσιάζει δεν αντιστοιχεί στο δικό του όνομα DNS ή στη δική του διεύθυνση IP, ο απομακρυσμένος κόμβος απορρίπτει τη σύνδεση.

Παράδειγμα

Για να ελέγξουμε τα SAN του πιστοποιητικού /etc/etcd/peer.crt, χρησιμοποιούμε την ακόλουθη εντολή:

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

Η εντολή επιστρέφει ένα αποτέλεσμα παρόμοιο με το ακόλουθο:

1
2
X509v3 Subject Alternative Name:
    DNS:PSQL_VIP, DNS:PSQL_2, IP Address:192.168.1.4, IP Address:192.168.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 της αρχής έκδοσης πιστοποιητικών (CA) που υποτίθεται ότι εξέδωσε το πιστοποιητικό, για να επιβεβαιώσετε ότι πρόκειται για τη σωστή.

Για να ανακτήσετε την τιμή της επέκτασης Authority Key Identifier ενός πιστοποιητικού, χρησιμοποιήστε την παρακάτω εντολή.

Μπορείτε να προσαρμόσετε τη μεταβλητή της παρακάτω εντολής:

Προσαρμοσμένη τιμή Μεταβλητή Σχόλιο
ISSUED_CERT Διαδρομή του πιστοποιητικού του οποίου θα ελεγχθεί ο εκδότης.

Ή συμπληρώστε το πεδίο με ένα από τα πιστοποιητικά των κόμβων:

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

Πληροφορίες

Η επιλογή -issuer ανακτά το CN του πιστοποιητικού του εκδότη.

Για να ανακτήσετε την τιμή της επέκτασης Subject Key Identifier ενός πιστοποιητικού, χρησιμοποιήστε την παρακάτω εντολή.

Μπορείτε να προσαρμόσετε τη μεταβλητή της παρακάτω εντολής:

Προσαρμοσμένη τιμή Μεταβλητή Σχόλιο
ISSUER_CA Διαδρομή του πιστοποιητικού της αρχής έκδοσης πιστοποιητικών που θεωρείται ότι είναι ο εκδότης.

Ή συμπληρώστε το πεδίο με ένα από τα πιστοποιητικά αρχής έκδοσης πιστοποιητικών:

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

Πληροφορίες

Η επιλογή -subject ανακτά το CN του πιστοποιητικού.

Παράδειγμα

Θέλουμε να ελέγξουμε ότι η CA που υπέγραψε το πιστοποιητικό του αρχείου /etc/patroni/client.crt είναι πράγματι αυτή του αρχείου /etc/patroni/ca.crt.
Αρχικά, ανακτούμε το περιεχόμενο της επέκτασης X509v3 Authority Key Identifier του πιστοποιητικού /etc/patroni/client.crt με την ακόλουθη εντολή:

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

Η εντολή επιστρέφει:

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

Στη συνέχεια, ανακτούμε το περιεχόμενο της επέκτασης X509v3 Subject Key Identifier της CA /etc/patroni/ca.crt με την ακόλουθη εντολή:

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

Η εντολή επιστρέφει:

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

Η σύγκριση των δύο εξόδων δείχνει ότι τα πεδία Key Identifier και CN είναι πανομοιότυπα: το πιστοποιητικό του αρχείου /etc/patroni/ca.crt είναι πράγματι η CA που υπέγραψε το πιστοποιητικό του αρχείου /etc/patroni/client.crt.