Домены
Интересные статьи
Домены

Как создать/обновить SSL сертификаты для PostgreSQL

Понадобилось мне как-то создать новые сертификаты для сервера и раскидать их по клиентским серверам. Делалось для того, чтобы иметь защищенное соединение у PostgreSQL.

Приступим.

Следуюшими действиями мы сгенерируем сертификаты для PostgreSQL

Предположим, у вас уже установлена PostgreSQL(с ssl) и OpenSSL.

Для начала нужно сгенерировать 3 сертификата самого сервера.

  • root.crt  (доверенный корневой сертификат)
  • server.crt  (сертификат сервера)
  • server.key  (закрытый ключ)

Все команды мы будем выполнять от имени root (входить кто как привык sudo — или sudo -i)

Переходим в каталог с PostgreSQL

Для Gentoo:

cd /var/lib/postgresql/data/

Для CentOS:

cd /var/lib/pgsql/data

Далее, создадим закрытый ключ (server.key)

openssl genrsa -des3 -out server.key 1024

Далее, удалим пароль из ключа, чтобы не вводить его каждый раз:

openssl rsa -in server.key -out server.key

Установим необходимые права доступа и владельца файла

chmod 400 server.key

chown posgres.postgres server.key

Создадим сертификат сервера: (для параметра subj обязательны одинарные кавычки)

openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=RU/ST=Moscow/L=M/O=MyBlabla/CN=pg server'

Этой командой мы создадим сертификат сроком действия 10 лет, сгенерированный для России (C), штата/города Москва (ST), организации MyBlabla, и сервера pg server

Т.к. это самоподписанный сертификат, сделаем его доверенным

cp server.crt root.crt

Далее отредактировать postgresql.conf, чтобы, активировать SSL:
ssl = on

После чего перезапускаем сервер

/etc/init.d/posgresql restart

Сервер может сразу и не запуститься, если он не запустился — смотрите логи и исправьте причину

На этом мы закончили генерацию серверного сертификата, но нам предстоит еще сгенерировать их для клиентов

Чтож, приступим.

Для клиента требуются следующие файлы:

root.crt (доверенный корневой сертификат)
postgresql.crt (сертификат сервера)
postgresql.key (закрытый ключ)

 

Мы будем генерировать их на сервере, например в каталог /tmp/

Сначала создадим закрытый ключ

openssl genrsa -des3 -out /tmp/postgresql.key 1024

Удалим из него пароль

openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key

Создадим сертификат сервера (postgresql.crt)

openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=RU/ST=Moscow/L=M/O=MyBlabla/CN=vasya'

Здесь нужно в параметре CN указать имя пользователя postgre, с именем которого мы подключаемся.

Создаем сам сертификат

openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -days 3650 -out /tmp/postgresql.crt -CAcreateserial

Сертификат создается также на 10 лет (иначе на месяц)

С генерацией клиентских сертификатов завершили, теперь нужно скопировать их(3 файла указанные выше) на клиентские машины.

Для Windows:

%appdata%\postgresql\

Для Linux:

~/.postgresql/

 

P.S. обязательно проверьте (для Linux), чтобы у postgresql.key права доступа были 600

Обо мне cyber01

Прочитайте также

Как сделать дамп только нужных записей из базы данных

Бывало такое, что из всей таблицы нужно сделать дамп только определенных строк? Например, результата какого-либо …

Как установить Zend Framework на Ubuntu 18.04

Zend Framework 3 это последняя версия фреймворка. Новая версия отличается большей производительностью. Zend это фреймворк …

Как установить Python 3.8 в Ubuntu/Debian/Linux Mint

Команда разработки Python выпустила версию 3.8. Вы можете скачать последнюю стабильную версию ветки Python 3.8 …

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *