Домены
Интересные статьи
Домены
Главная страница / Linux / Как создать/обновить SSL сертификаты для PostgreSQL

Как создать/обновить 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

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

Как включить триггеры PostgreSQL при логической репликации

Как включить триггеры PostgreSQL при логической репликации?  Задался этим вопросом, когда настраивал триггеры на реплицируемой …

Как обновить библиотеку ICU и PHP intl в CentOS 7/Ubuntu/Debian

Недавно столкнулся с такой проблемой: после переноса проекта с сервера (Debian) на другой сервер (CentOS) …

Как установить обновления безопасности Ubuntu 18.04 вручную

В данной статье я расскажу как установить обновления безопасности Ubuntu 18.04 вручную. Скачать в PDF

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

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