Hyppää sisältöön

PostgreSQL-klusterin sertifikaattien tarkistaminen

Asennuksen tai uusimisen aikana tai yksinkertaisesti PostgreSQL-klusterin sertifikaattien vanhenemisajankohdan selvittämiseksi voi olla hyödyllistä tarkastella luotujen sertifikaattien sisältöä.

PostgreSQL-klusterin käyttämät sertifikaatit ovat seuraavat:

 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

Juurivarmentajan sertifikaatti. Sama sertifikaatti on hakemistoissa /etc/patroni/ ja /etc/etcd/.

client.crt

PostgreSQL-solmun sertifikaatti. Sama sertifikaatti on hakemistoissa /etc/patroni/ ja /etc/etcd/. patroni ja etcd käyttävät sitä solmujen väliseen asiakasviestintään.

client.key

Sertifikaattiin client.crt liittyvä avain.

peer.crt

Sama sertifikaatti kuin client.crt. Sitä käytetään solmujen väliseen sisäiseen etcd-viestintään.

peer.key

Sama avain kuin client.key.

Kohteita on siis kaikkiaan kolme:

  • juurivarmentajan sertifikaatti (/etc/etcd/ca.crt, /etc/patroni/ca.crt);
  • PostgreSQL-solmun sertifikaatti (/etc/etcd/client.crt, /etc/etcd/peer.crt, /etc/patroni/client.crt);
  • PostgreSQL-solmun sertifikaattiin liittyvä avain (/etc/etcd/client.key, /etc/etcd/peer.key, /etc/patroni/client.key).

Sertifikaatin vanhenemispäivän tarkistaminen

Kun haluat tarkistaa sertifikaatin vanhenemispäivän, käytä alla olevaa komentoa.

Voit muokata seuraavan komennon muuttujaa:

Muokattu arvo Muuttuja Kommentti
EXPIRY_CERT Sen sertifikaatin polku, jonka vanhenemispäivä tarkistetaan.

Tai täytä kenttä jollakin klusterin sertifikaateista:

1
openssl x509 -in EXPIRY_CERT -noout -enddate

Jos vanhenemispäivä on ohitettu, sertifikaattia pidetään kelvottomana.

Varoitus

Jos sertifikaatin myöntänyt varmentaja on vanhentunut, myös sertifikaattia pidetään kelvottomana. Tarkista siksi myös varmentajan vanhenemispäivä.

Esimerkki

Sertifikaatin /etc/patroni/client.crt vanhenemispäivän tarkistamiseen käytämme seuraavaa komentoa:

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

Tuloste näyttää suunnilleen tältä:

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

Tässä sertifikaatti vanhenee 18. joulukuuta 2030 klo 14:04:09.

Sertifikaatin vaihtoehtoisten nimien (Subject Alternative Names) tarkistaminen

Kun haluat tarkistaa sertifikaatin SAN-nimet (Subject Alternative Names) eli ne nimet ja IP-osoitteet, joille se on voimassa, käytä alla olevaa komentoa.

Voit muokata seuraavan komennon muuttujaa:

Muokattu arvo Muuttuja Kommentti
SAN_CERT Sen sertifikaatin polku, jonka SAN-nimet tarkistetaan.

Tai täytä kenttä jollakin solmun sertifikaateista:

1
openssl x509 -in SAN_CERT -noout -ext subjectAltName

Jos solmuun yhdistämiseen käytetty DNS-nimi tai IP-osoite ei ole sen sertifikaatin SAN-nimissä, yhteyttä pidetään kelvottomana. Vastaavasti kun solmu avaa yhteyden toiseen solmuun eikä sen esittämä sertifikaatti vastaa sen omaa DNS-nimeä tai IP-osoitetta, etäsolmu hylkää yhteyden.

Esimerkki

Sertifikaatin /etc/etcd/peer.crt SAN-nimien tarkistamiseen käytämme seuraavaa komentoa:

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

Komento palauttaa suunnilleen seuraavanlaisen tuloksen:

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

Tässä sertifikaatti kattaa DNS-nimet PSQL_VIP ja PSQL_2 sekä IP-osoitteet 192.168.1.4 ja 192.168.1.2.

Sertifikaatin myöntäneen varmentajan tarkistaminen

Sertifikaattia luotaessa siihen voidaan lisätä X509v3-laajennus Authority Key Identifier. Tähän laajennukseen voidaan tallentaa sertifikaatin myöntäjän julkisen avaimen tiiviste, joka vastaa myöntäjän X509v3-laajennuksen Subject Key Identifier sisältöä.

Info

Sertifikaateissa, jotka on luotu PostgreSQL-klusterin asennusohjeiden mukaisesti, on laajennukset Authority Key Identifier ja Subject Key Identifier.

Jos nämä laajennukset ovat olemassa, voit hakea sertifikaatin myöntäjän julkisen avaimen tiivisteen ja verrata sitä sen varmentajan (CA), jonka oletetaan myöntäneen sertifikaatin, laajennuksen Subject Key Identifier tiivisteeseen varmistaaksesi, että se on oikea.

Kun haluat hakea sertifikaatin Authority Key Identifier -laajennuksen arvon, käytä alla olevaa komentoa.

Voit muokata seuraavan komennon muuttujaa:

Muokattu arvo Muuttuja Kommentti
ISSUED_CERT Sen sertifikaatin polku, jonka myöntäjä tarkistetaan.

Tai täytä kenttä jollakin solmun sertifikaateista:

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

Info

Valitsin -issuer hakee myöntäjäsertifikaatin CN:n.

Kun haluat hakea sertifikaatin Subject Key Identifier -laajennuksen arvon, käytä alla olevaa komentoa.

Voit muokata seuraavan komennon muuttujaa:

Muokattu arvo Muuttuja Kommentti
ISSUER_CA Sen varmentajan sertifikaatin polku, jonka oletetaan olevan myöntäjä.

Tai täytä kenttä jollakin varmentajan sertifikaateista:

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

Info

Valitsin -subject hakee sertifikaatin CN:n.

Esimerkki

Haluamme tarkistaa, että tiedostossa /etc/patroni/client.crt olevan sertifikaatin allekirjoittanut varmentaja on todella tiedostossa /etc/patroni/ca.crt oleva varmentaja.
Haemme ensin sertifikaatin /etc/patroni/client.crt X509v3-laajennuksen Authority Key Identifier sisällön seuraavalla komennolla:

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

Komento palauttaa:

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

Haemme sitten varmentajan /etc/patroni/ca.crt X509v3-laajennuksen Subject Key Identifier sisällön seuraavalla komennolla:

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

Komento palauttaa:

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

Kahden tulosteen vertailu osoittaa, että Key Identifier ja CN ovat samat: tiedostossa /etc/patroni/ca.crt oleva sertifikaatti on todella se varmentaja, joka allekirjoitti tiedostossa /etc/patroni/client.crt olevan sertifikaatin.