PostgreSQL supporta la connessione SSL che consente agli utenti di connettersi in modo sicuro ai propri database. In questo articolo vedremo come abilitare SSL nel database PostgreSQL.
Come abilitare SSL in PostgreSQL
Ecco i passaggi per abilitare la connessione SSL in PostgreSQL. Sul server PostgreSQL, abbiamo bisogno di 3 certificati nella directory dei dati per la configurazione SSL. Sono:
- root.crt (certificato radice attendibile)
- server.crt (certificato del server)
- chiave.server (chiave privata)
Apri il terminale ed esegui il seguente comando per eseguire come root
$ sudo -
$ cd /var/lib/pgsql/data
Genera chiave privata usando openssl. Ti verrà richiesta la passphrase.
$ openssl genrsa -des3 -out server.key 1024
Rimuovi passphrase
$ openssl rsa -in server.key -out server.key
Bonus da leggere:i migliori blog di database da seguire
Aggiorna l'autorizzazione del file e la proprietà del file della chiave privata.
$ chmod 400 server.key
$ chown postgres.postgres server.key
Allo stesso modo, crea il certificato del server
$ openssl req -new -key server.key -days 3650 -out server.crt -x509
Nell'istruzione precedente, -x509 indica un certificato autofirmato. Ti verranno richiesti dettagli come e-mail, paese, ecc. Inseriscilo e completa la generazione del certificato.
Poiché stiamo utilizzando un certificato autofirmato, utilizzeremo la nostra chiave del server come certificato radice.
$ cp server.crt root.crt
Aggiorna pg_hba.conf per aggiungere le seguenti righe
# IPv4 remote connections for authenticated users hostssl all www-data 0.0.0.0/0 md5 clientcert=1 hostssl all postgres 0.0.0.0/0 md5 clientcert=1
Modifica postgresql.conf per aggiungere la riga seguente
ssl = on
Riavvia PostgreSQL Server
$ /etc/init.d/postgresql restart
Bonus Leggi:Come aumentare le connessioni massime in PostgreSQL
Abilita SSL nel client PostgreSQL
Abbiamo anche bisogno di 3 file per abilitare SSL nel client PostgreSQL. Li memorizzeremo in ~/.postgresql/ directory
- root.crt (certificato radice attendibile)
- postgresql.crt (certificato cliente)
- postgresql.key (chiave privata)
Crea postgresql.key sul computer client e rimuovere la passphrase.
$openssl genrsa -des3 -out /tmp/postgresql.key 1024
$openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
Bonus Leggi:Suggerimenti per l'ottimizzazione delle prestazioni di PostgreSQL
Successivamente, creiamo postgresql.crt e lo firmiamo utilizzando la radice attendibile (file della chiave privata dal server). Nota , quando viene richiesto il nome comune del certificato (CN), impostalo sul nome del database.
$openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr
$openssl x509 -req -in server.req -out /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
Copia i tre file creati nella directory /tmp del server sul computer client. Copia root.crt dalla directory del server /tmp nella directory ~/.postgresql/ del client directory.
Si spera che questo articolo ti aiuti ad abilitare SSL in PostgreSQL.