[3] PostgreSQL 13 – SSL/TLS

26 stycznia 2022 Wyłączono przez Adam [zicherka] Nogły

Włączymy teraz połączenie z PostgreSQL poprzez SSL/TLS

[1] Pobierz i zainstaluj certyfikaty od Let’s Encrypt lub wygeneruj swoje własne certyfikaty. My wykorzystamy nasze własne wygenerowane certyfikaty.

[2] Skopiuj certyfikaty oraz skonfiguruj PostreSQL.

[root@vlsr01 ~]# cp /etc/pki/tls/certs/server.{crt,key} /var/lib/pgsql/data/
[root@vlsr01 ~]# chown postgres. /var/lib/pgsql/data/server.{crt,key}
[root@vlsr01 ~]# chmod 600 /var/lib/pgsql/data/server.{crt,key}
[root@vlsr01 ~]# mcedit /var/lib/pgsql/data/postgresql.conf
#linia 102: odkomentuj i zmień
ssl = on
#linie 104, 106: odkomentuj i zmień na Twoje własne certyfikaty
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
[root@vlsr01 ~]# mcedit /var/lib/pgsql/data/pg_hba.conf
#linie od 81 i dalej: ustawienia metod autentykacji
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident
#dodaj na końcu
#[hostssl] -> użyj połączenia TCP/IP tylko kiedy włączone jest SSL/TLS
#[192.168.0.0/16] -> sieć, która może uzyskać połączenie
#[md5] -> metoda do szyfrowania haseł
host    all             all             192.168.0.0/16          md5
hostssl all             all             192.168.0.0/16          md5

[root@vlsr01 ~]# systemctl restart postgresql

[3] Sprawdź ustawienia, aby połączyć się z bazą danych PostgreSQL z hostów w sieci, do której zezwolono na połączenie.

#brak połączenia SSL/TLS
[user01@vlsr01 ~]$ psql testdb
psql (13.5)
Type "help" for help.
testdb=> \q

#połączenie SSL/TLS
[user01@vlsr01 ~]$ psql -h vlsr01.zicher.lab testdb
Password for user user01: wpisz hasło
psql (13.5)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
testdb=> \q

#połączenie SSL/TLS z innego hosta
[root@vlsr02 ~]# psql -h vlsr01.zicher.lab -d testdb -U user01
Password for user user01: # wpisz hasło
psql (13.5)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
testdb=> \q