SSL on PostgreSQL

Установка Certbot и сертификатов

  1. Проверяем работу snap
sudo snap install core; sudo snap refresh core
  1. Удаляем на всякий случай certbot если он был.
sudo apt-get remove certbot
  1. Устанавливаем snap
sudo snap install --classic certbot
  1. Создаем симлинк на бианрник (не уверен зачем)
sudo ln -s /snap/bin/certbot /usr/bin/certbot
  1. Получение сертификата
sudo certbot certonly --standalone -d db.mak-sim.ru

Настройка hook’а для PG

Создаём файл /etc/letsencrypt/renewal-hooks/deploy/postgresql.deploy:

 #!/bin/bash
 umask 0177
 DOMAIN=db.mak-sim.ru
 DATA_DIR=/var/lib/postgresql/12/main
 cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem $DATA_DIR/server.crt
 cp /etc/letsencrypt/live/$DOMAIN/privkey.pem $DATA_DIR/server.key
 chown postgres:postgres $DATA_DIR/server.crt $DATA_DIR/server.key

DATA_DIR можно узнать выполнив команду:

sudo -u postgres psql -U postgres -c 'SHOW data_directory'

Файлу необходимо выдать права на исполнение.

Настройки PostgreSQL

postgresql.conf

В файле postgresql.conf необходимо поправить:

 ssl = on  
 ssl_cert_file = 'server.crt'  
 ssl_key_file = 'server.key'  
 ssl_prefer_server_ciphers = on

Местоположение файла можно узнать выпонив:

sudo -u postgres psql -U postgres -c 'SHOW config_file'

pg_hba.conf

Добавляем строку

 hostssl all all 0.0.0.0/0 md5