Kontrollera certifikaten för PostgreSQL-clustret¶
Under installationen, vid en förnyelse eller helt enkelt för att ta reda på när certifikaten för PostgreSQL-clustret går ut kan det vara användbart att granska innehållet i de genererade certifikaten.
Följande certifikat används av PostgreSQL-clustret:
1 2 3 4 5 6 7 8 9 10 11 | |
ca.crt-
Certifikat för rotcertifikatutfärdaren. Samma certifikat finns i katalogerna
/etc/patroni/och/etc/etcd/. client.crt-
Certifikat för PostgreSQL-noden. Samma certifikat finns i katalogerna
/etc/patroni/och/etc/etcd/. Det används avpatroniochetcdför klientkommunikationen mellan noderna. client.key-
Nyckel som hör till certifikatet
client.crt. peer.crt-
Samma certifikat som
client.crt. Det används för den interna kommunikationen ietcdmellan noderna. peer.key-
Samma nyckel som
client.key.
Det finns alltså totalt tre element:
- rotcertifikatutfärdarens certifikat (
/etc/etcd/ca.crt,/etc/patroni/ca.crt); - PostgreSQL-nodens certifikat (
/etc/etcd/client.crt,/etc/etcd/peer.crt,/etc/patroni/client.crt); - nyckeln som hör till PostgreSQL-nodens certifikat (
/etc/etcd/client.key,/etc/etcd/peer.key,/etc/patroni/client.key).
Kontrollera ett certifikats utgångsdatum¶
Använd kommandot nedan för att kontrollera ett certifikats utgångsdatum.
Du kan anpassa variabeln i följande kommando:
| Anpassat värde | Variabel | Kommentar |
|---|---|---|
EXPIRY_CERT |
Sökväg till certifikatet vars utgångsdatum ska kontrolleras. |
Eller fyll fältet med ett av clustrets certifikat:
1 | |
Om utgångsdatumet har passerats betraktas certifikatet som ogiltigt.
Varning
Om den certifikatutfärdare som utfärdade certifikatet har gått ut betraktas certifikatet också som ogiltigt. Kontrollera därför även certifikatutfärdarens utgångsdatum.
Exempel
För att kontrollera utgångsdatumet för certifikatet /etc/patroni/client.crt använder vi följande kommando:
1 | |
Resultatet liknar följande:
1 | |
Här går certifikatet ut den 18 december 2030 kl. 14:04:09.
Kontrollera ett certifikats alternativa namn (SAN)¶
Använd kommandot nedan för att kontrollera ett certifikats SAN (Subject Alternative Names), det vill säga de namn och IP-adresser som det är giltigt för.
Du kan anpassa variabeln i följande kommando:
| Anpassat värde | Variabel | Kommentar |
|---|---|---|
SAN_CERT |
Sökväg till certifikatet vars SAN ska kontrolleras. |
Eller fyll fältet med ett av nodens certifikat:
1 | |
Om det DNS-namn eller den IP-adress som används för att ansluta till en nod inte finns bland SAN i nodens certifikat betraktas anslutningen som ogiltig. På samma sätt gäller att när en nod öppnar en anslutning till en annan nod och det certifikat som den visar upp inte motsvarar dess eget DNS-namn eller dess egen IP-adress, avvisar fjärrnoden anslutningen.
Exempel
För att kontrollera SAN för certifikatet /etc/etcd/peer.crt använder vi följande kommando:
1 | |
Kommandot returnerar ett resultat som liknar följande:
1 2 | |
Här täcker certifikatet DNS-namnen PSQL_VIP och PSQL_2 samt IP-adresserna 192.168.1.4 och 192.168.1.2.
Kontrollera vilken certifikatutfärdare som utfärdade ett certifikat¶
När ett certifikat genereras kan X509v3-tillägget Authority Key Identifier läggas till i det. Detta tillägg kan lagra hashvärdet av utfärdarens publika nyckel, vilket motsvarar innehållet i utfärdarens X509v3-tillägg Subject Key Identifier.
Info
Certifikat som har genererats enligt installationsdokumentationen för PostgreSQL-clustret har tilläggen Authority Key Identifier och Subject Key Identifier.
Om dessa tillägg finns kan du hämta hashvärdet av den publika nyckeln för ett certifikats utfärdare och sedan jämföra det med hashvärdet i tillägget Subject Key Identifier för den CA som antas ha utfärdat certifikatet, för att bekräfta att det är rätt CA.
Använd kommandot nedan för att hämta värdet av tillägget Authority Key Identifier för ett certifikat.
Du kan anpassa variabeln i följande kommando:
| Anpassat värde | Variabel | Kommentar |
|---|---|---|
ISSUED_CERT |
Sökväg till certifikatet vars utfärdare ska kontrolleras. |
Eller fyll fältet med ett av nodens certifikat:
1 | |
Info
Alternativet -issuer hämtar CN för det utfärdande certifikatet.
Använd kommandot nedan för att hämta värdet av tillägget Subject Key Identifier för ett certifikat.
Du kan anpassa variabeln i följande kommando:
| Anpassat värde | Variabel | Kommentar |
|---|---|---|
ISSUER_CA |
Sökväg till certifikatet för den certifikatutfärdare som antas vara utfärdaren. |
Eller fyll fältet med ett av certifikatutfärdarens certifikat:
1 | |
Info
Alternativet -subject hämtar certifikatets CN.
Exempel
Vi vill kontrollera att den CA som signerade certifikatet i filen /etc/patroni/client.crt verkligen är den som finns i filen /etc/patroni/ca.crt.
Först hämtar vi innehållet i X509v3-tillägget Authority Key Identifier för certifikatet /etc/patroni/client.crt med följande kommando:
1 | |
Vilket returnerar:
1 2 3 | |
Sedan hämtar vi innehållet i X509v3-tillägget Subject Key Identifier för certifikatutfärdaren /etc/patroni/ca.crt med följande kommando:
1 | |
Vilket returnerar:
1 2 3 | |
En jämförelse av de två resultaten visar att Key Identifier och CN är identiska: certifikatet i filen /etc/patroni/ca.crt är verkligen den CA som signerade certifikatet i filen /etc/patroni/client.crt.