PostgreSQL поддържа SSL връзка, която позволява на потребителите да се свързват сигурно със своите бази данни. В тази статия ще разгледаме как да активирате SSL в базата данни PostgreSQL.
Как да активирам SSL в PostgreSQL
Ето стъпките за активиране на SSL връзка в PostgreSQL. На PostgreSQL сървъра ни трябват 3 сертификата в директорията с данни за SSL конфигурация. Те са:
- root.crt (доверен главен сертификат)
- server.crt (сертификат на сървъра)
- server.key (частен ключ)
Отворете терминала и изпълнете следната команда, за да стартирате като root
$ sudo -
$ cd /var/lib/pgsql/data
Генерирайте частен ключ с помощта на openssl. Ще бъдете подканени за парола.
$ openssl genrsa -des3 -out server.key 1024
Премахнете паролата
$ openssl rsa -in server.key -out server.key
Бонус за четене:Топ блогове за база данни, които да следвате
Актуализирайте разрешението за файл и собствеността върху файла с частен ключ.
$ chmod 400 server.key
$ chown postgres.postgres server.key
По същия начин създайте сървърен сертификат
$ openssl req -new -key server.key -days 3650 -out server.crt -x509
В горното изявление -x509 показва самоподписан сертификат. Ще бъдете подканени за подробности като имейл, държава и т.н. Въведете го и завършете генерирането на сертификат.
Тъй като използваме самоподписан сертификат, ще използваме нашия сървърен ключ като основен сертификат.
$ cp server.crt root.crt
Актуализирайте pg_hba.conf, за да добавите следните редове
# 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
Редактирайте postgresql.conf, за да добавите следния ред
ssl = on
Рестартирайте PostgreSQL Server
$ /etc/init.d/postgresql restart
Бонус четене:Как да увеличите максималния брой връзки в PostgreSQL
Активиране на SSL в PostgreSQL клиент
Също така се нуждаем от 3 файла, за да активираме SSL в PostgreSQL клиента. Ще ги съхраняваме в ~/.postgresql/ директория
- root.crt (доверен главен сертификат)
- postgresql.crt (сертификат на клиента)
- postgresql.key (частен ключ)
Създайте postgresql.key на клиентска машина и премахнете паролата.
$openssl genrsa -des3 -out /tmp/postgresql.key 1024
$openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
Бонус за четене:Съвети за настройка на производителността на PostgreSQL
След това създаваме postgresql.crt и го подписваме с помощта на доверения корен (файл с частен ключ от сървъра). Моля, обърнете внимание , когато бъдете подканени за общо име на сертификат (CN), задайте го на име на база данни.
$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
Копирайте трите файла, създадени в директорията /tmp на сървъра, на клиентска машина. Копирайте root.crt от директорията на сървъра /tmp в ~/.postgresql/ на клиента директория.
Надяваме се, че тази статия ще ви помогне да активирате SSL в PostgreSQL.