Kontrola certifikátů clusteru PostgreSQL¶
Během instalace, během obnovy nebo jednoduše pro zjištění, kdy vyprší platnost certifikátů clusteru PostgreSQL, může být užitečné prozkoumat obsah vygenerovaných certifikátů.
Cluster PostgreSQL používá následující certifikáty:
1 2 3 4 5 6 7 8 9 10 11 | |
ca.crt-
Certifikát kořenové certifikační autority. Stejný certifikát se nachází v adresářích
/etc/patroni/a/etc/etcd/. client.crt-
Certifikát uzlu PostgreSQL. Stejný certifikát se nachází v adresářích
/etc/patroni/a/etc/etcd/. Používají hopatroniaetcdpro klientskou komunikaci mezi uzly. client.key-
Klíč přidružený k certifikátu
client.crt. peer.crt-
Stejný certifikát jako
client.crt. Používá se pro interní komunikacietcdmezi uzly. peer.key-
Stejný klíč jako
client.key.
Celkem jsou tedy tři položky:
- certifikát kořenové certifikační autority (
/etc/etcd/ca.crt,/etc/patroni/ca.crt); - certifikát uzlu PostgreSQL (
/etc/etcd/client.crt,/etc/etcd/peer.crt,/etc/patroni/client.crt); - klíč přidružený k certifikátu uzlu PostgreSQL (
/etc/etcd/client.key,/etc/etcd/peer.key,/etc/patroni/client.key).
Kontrola data vypršení platnosti certifikátu¶
Chcete-li zkontrolovat datum vypršení platnosti certifikátu, použijte níže uvedený příkaz.
Proměnnou pro následující příkaz můžete přizpůsobit:
| Vlastní hodnota | Proměnná | Komentář |
|---|---|---|
EXPIRY_CERT |
Cesta k certifikátu, jehož datum vypršení platnosti chcete zkontrolovat. |
Nebo vyplňte pole jedním z certifikátů clusteru:
1 | |
Pokud datum vypršení platnosti uplynulo, certifikát se považuje za neplatný.
Upozornění
Pokud vypršela platnost certifikační autority, která certifikát vydala, považuje se certifikát rovněž za neplatný. Zkontrolujte proto také datum vypršení platnosti certifikační autority.
Příklad
Ke kontrole data vypršení platnosti certifikátu /etc/patroni/client.crt použijeme následující příkaz:
1 | |
Výstup je podobný tomuto:
1 | |
Zde platnost certifikátu vyprší 18. prosince 2030 ve 14:04:09.
Kontrola alternativních názvů subjektu (SAN) certifikátu¶
Chcete-li zkontrolovat názvy SAN (Subject Alternative Names) certifikátu, tj. názvy a IP adresy, pro které je platný, použijte níže uvedený příkaz.
Proměnnou pro následující příkaz můžete přizpůsobit:
| Vlastní hodnota | Proměnná | Komentář |
|---|---|---|
SAN_CERT |
Cesta k certifikátu, jehož názvy SAN chcete zkontrolovat. |
Nebo vyplňte pole jedním z certifikátů uzlu:
1 | |
Pokud název DNS nebo IP adresa použité k připojení k uzlu nejsou uvedeny v SAN jeho certifikátu, považuje se připojení za neplatné. Stejně tak když uzel otevírá připojení k jinému uzlu a certifikát, který předkládá, neodpovídá jeho vlastnímu názvu DNS nebo IP adrese, vzdálený uzel připojení odmítne.
Příklad
Ke kontrole názvů SAN certifikátu /etc/etcd/peer.crt použijeme následující příkaz:
1 | |
Příkaz vrátí výsledek podobný tomuto:
1 2 | |
Zde certifikát pokrývá názvy DNS PSQL_VIP a PSQL_2 a také IP adresy 192.168.1.4 a 192.168.1.2.
Kontrola, která certifikační autorita certifikát vydala¶
Při generování certifikátu do něj lze přidat rozšíření X509v3 Authority Key Identifier. Toto rozšíření může uchovávat hodnotu hash veřejného klíče vystavitele, která odpovídá obsahu rozšíření X509v3 Subject Key Identifier vystavitele.
Informace
Certifikáty vygenerované podle dokumentace k instalaci clusteru PostgreSQL obsahují rozšíření Authority Key Identifier a Subject Key Identifier.
Pokud jsou tato rozšíření přítomna, můžete získat hodnotu hash veřejného klíče vystavitele certifikátu a porovnat ji s hodnotou hash v rozšíření Subject Key Identifier certifikační autority, která měla certifikát vydat, a potvrdit tak, že jde o tu správnou.
Chcete-li získat hodnotu rozšíření Authority Key Identifier certifikátu, použijte níže uvedený příkaz.
Proměnnou pro následující příkaz můžete přizpůsobit:
| Vlastní hodnota | Proměnná | Komentář |
|---|---|---|
ISSUED_CERT |
Cesta k certifikátu, jehož vystavitele chcete zkontrolovat. |
Nebo vyplňte pole jedním z certifikátů uzlu:
1 | |
Informace
Možnost -issuer získá CN vydávajícího certifikátu.
Chcete-li získat hodnotu rozšíření Subject Key Identifier certifikátu, použijte níže uvedený příkaz.
Proměnnou pro následující příkaz můžete přizpůsobit:
| Vlastní hodnota | Proměnná | Komentář |
|---|---|---|
ISSUER_CA |
Cesta k certifikátu certifikační autority, která je považována za vystavitele. |
Nebo vyplňte pole jedním z certifikátů certifikační autority:
1 | |
Informace
Možnost -subject získá CN certifikátu.
Příklad
Chceme ověřit, že CA, která podepsala certifikát v souboru /etc/patroni/client.crt, je skutečně ta ze souboru /etc/patroni/ca.crt.
Nejprve získáme obsah rozšíření X509v3 Authority Key Identifier certifikátu /etc/patroni/client.crt pomocí následujícího příkazu:
1 | |
Příkaz vrátí:
1 2 3 | |
Poté získáme obsah rozšíření X509v3 Subject Key Identifier certifikační autority /etc/patroni/ca.crt pomocí následujícího příkazu:
1 | |
Příkaz vrátí:
1 2 3 | |
Porovnání obou výstupů ukazuje, že Key Identifier i CN jsou totožné: certifikát v souboru /etc/patroni/ca.crt je skutečně CA, která podepsala certifikát v souboru /etc/patroni/client.crt.