sql >> Database >  >> RDS >> PostgreSQL

SSL inschakelen in PostgreSQL

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.

  1. Aan de slag met PostgreSQL 11 op Ubuntu 18.04

  2. Hoe een opgeslagen procedure aanroepen in een orakelpakket met Entity Framework?

  3. Door de gebruiker gedefinieerd type wijzigen in SQL Server

  4. Neo4j-installatie