PostgreSQL ondersteunt een SSL-verbinding waarmee gebruikers veilig verbinding kunnen maken met hun databases. In dit artikel zullen we bekijken hoe u SSL in de PostgreSQL-database kunt inschakelen.
SSL inschakelen in PostgreSQL
Hier zijn de stappen om SSL-verbinding in PostgreSQL in te schakelen. Op de PostgreSQL-server hebben we 3 certificaten in de gegevensmap nodig voor SSL-configuratie. Dit zijn:
- root.crt (vertrouwd basiscertificaat)
- server.crt (servercertificaat)
- server.key (privésleutel)
Open terminal en voer de volgende opdracht uit om als root uit te voeren
$ sudo -
$ cd /var/lib/pgsql/data
Genereer een persoonlijke sleutel met openssl. U wordt gevraagd om een wachtwoordzin.
$ openssl genrsa -des3 -out server.key 1024
Wachtwoordzin verwijderen
$ openssl rsa -in server.key -out server.key
Bonus lezen:Top databaseblogs om te volgen
Werk de bestandsrechten en eigendom van het privésleutelbestand bij.
$ chmod 400 server.key
$ chown postgres.postgres server.key
Maak op dezelfde manier een servercertificaat
$ openssl req -new -key server.key -days 3650 -out server.crt -x509
In de bovenstaande verklaring geeft -x509 een zelfondertekend certificaat aan. U wordt gevraagd om details zoals e-mail, land, enz. Voer het in en voltooi het genereren van het certificaat.
Omdat we een zelfondertekend certificaat gebruiken, gebruiken we onze serversleutel als rootcertificaat.
$ cp server.crt root.crt
Update pg_hba.conf om de volgende regels toe te voegen
# 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
Bewerk postgresql.conf om de volgende regel toe te voegen
ssl = on
Start de PostgreSQL-server opnieuw
$ /etc/init.d/postgresql restart
Bonus lezen:hoe u het maximale aantal verbindingen in PostgreSQL kunt vergroten
SSL inschakelen in PostgreSQL-client
We hebben ook 3 bestanden nodig om SSL in de PostgreSQL-client in te schakelen. We zullen ze opslaan op ~/.postgresql/ map
- root.crt (vertrouwd basiscertificaat)
- postgresql.crt (klantcertificaat)
- postgresql.key (privésleutel)
Maak postgresql.key op de clientcomputer en verwijder de wachtwoordzin.
$openssl genrsa -des3 -out /tmp/postgresql.key 1024
$openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
Bonus Lezen:Tips voor het afstemmen van PostgreSQL-prestaties
Vervolgens maken we postgresql.crt en ondertekenen we deze met de vertrouwde root (privésleutelbestand van de server). Let op , wanneer u wordt gevraagd om de algemene naam van het certificaat (CN), stelt u deze in op databasenaam.
$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
Kopieer de drie bestanden die in de map /tmp van de server zijn gemaakt naar de clientcomputer. Kopieer root.crt van server /tmp directory naar ~/.postgresql/ van de client directory.
Hopelijk helpt dit artikel je om SSL in PostgreSQL in te schakelen.