PostgreSQL obsługuje połączenie SSL, które pozwala użytkownikom bezpiecznie łączyć się z ich bazami danych. W tym artykule przyjrzymy się, jak włączyć SSL w bazie danych PostgreSQL.
Jak włączyć SSL w PostgreSQL
Oto kroki, aby włączyć połączenie SSL w PostgreSQL. Na serwerze PostgreSQL potrzebujemy 3 certyfikatów w katalogu danych do konfiguracji SSL. Są to:
- root.crt (zaufany certyfikat główny)
- server.crt (certyfikat serwera)
- klucz.serwera (klucz prywatny)
Otwórz terminal i uruchom następujące polecenie, aby uruchomić jako root
$ sudo -
$ cd /var/lib/pgsql/data
Wygeneruj klucz prywatny za pomocą openssl. Zostaniesz poproszony o podanie hasła.
$ openssl genrsa -des3 -out server.key 1024
Usuń hasło
$ openssl rsa -in server.key -out server.key
Przeczytaj bonus:Najlepsze blogi dotyczące baz danych do obserwowania
Zaktualizuj uprawnienia do pliku i własność pliku klucza prywatnego.
$ chmod 400 server.key
$ chown postgres.postgres server.key
Podobnie utwórz certyfikat serwera
$ openssl req -new -key server.key -days 3650 -out server.crt -x509
W powyższym oświadczeniu -x509 wskazuje na certyfikat z podpisem własnym. Zostaniesz poproszony o podanie szczegółów, takich jak adres e-mail, kraj itp. Wprowadź go i zakończ generowanie certyfikatu.
Ponieważ używamy certyfikatu z podpisem własnym, użyjemy naszego klucza serwera jako certyfikatu głównego.
$ cp server.crt root.crt
Zaktualizuj pg_hba.conf, aby dodać następujące wiersze
# 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
Edytuj postgresql.conf, aby dodać następujący wiersz
ssl = on
Zrestartuj serwer PostgreSQL
$ /etc/init.d/postgresql restart
Przeczytaj bonus:Jak zwiększyć maksymalną liczbę połączeń w PostgreSQL
Włącz SSL w kliencie PostgreSQL
Potrzebujemy również 3 plików do włączenia SSL w kliencie PostgreSQL. Będziemy je przechowywać w ~/.postgresql/ katalog
- root.crt (zaufany certyfikat główny)
- postgresql.crt (certyfikat klienta)
- postgresql.key (klucz prywatny)
Utwórz postgresql.key na komputerze klienta i usuń hasło.
$openssl genrsa -des3 -out /tmp/postgresql.key 1024
$openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
Przeczytaj bonus:Wskazówki dotyczące dostrajania wydajności PostgreSQL
Następnie tworzymy postgresql.crt i podpisujemy go za pomocą zaufanego roota (pliku klucza prywatnego z serwera). Uwaga , gdy zostaniesz poproszony o podanie nazwy pospolitej certyfikatu (CN), ustaw ją na nazwę bazy danych.
$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
Skopiuj trzy pliki utworzone w katalogu /tmp serwera na komputer klienta. Skopiuj root.crt z katalogu serwera /tmp do katalogu klienta ~/.postgresql/ katalog.
Mamy nadzieję, że ten artykuł pomoże ci włączyć SSL w PostgreSQL.