Настройка SSL-соединения

Настройка SSL-соединения осуществляется на этапе подготовки СУБД PostgreSQL (см. Подготовка СУБД PostgreSQL).

1. Настройка SSL-соединения на сервере PostgreSQL

  1. Из Центра сертификации скопируйте в папку /etc/postgresql/16/main на сервер PostgreSQL подготовленные:

    • сертификат Центра сертификации (например, ca.crt);

    • подписанный сертификат сервера PostgreSQL (например, server.crt);

    • сгенерированный закрытый ключ сервера PostgreSQL (например, server.key).

  2. Для сертификатов и закрытого ключа установите:

    • доступ на чтение и запись только для владельцев:

      chmod 600 ca.crt server.crt server.key
    • владельца и группу пользователя postgres:

      chown postgres:postgres ca.crt server.crt server.key
  3. В конфигурационном файле /etc/postgresql/12/main/postgresql.conf[1]:

    • включите поддержку зашифрованных соединений:

      ssl = on
    • укажите путь к файлу сертификата Центра сертификации:

      ssl_ca_file = '/etc/postgresql/16/main/ca.crt'
    • укажите путь к файлу сертификата сервера PostgreSQL:

      ssl_cert_file = '/etc/postgresql/16/main/server.crt'
    • укажите путь к файлу закрытого ключа сервера PostgreSQL:

      ssl_key_file = '/etc/postgresql/16/main/server.key'
  4. Для доступа модуля к серверу PostgreSQL только по доверенному сертификату в конфигурационном файле /etc/postgresql/12/main/pg_hba.conf[1] укажите:

    • тип подключения hostssl;

    • метод аутентификации по сертификату cert, если не требуется дополнительная аутентификация по паролю;

    • параметр аутентификации clientcert. При значении:

      • verify-full сервер PostgreSQL проверяет, подписан ли сертификат доверенным центром (CA) и совпадает ли имя клиента с именем в сертификате (CN);

      • verify-ca сервер PostgreSQL проверяет, подписан ли сертификат клиента доверенным центром (CA).

        Пример 1. Пример настройки подключения
        # TYPE    DATABASE   USER                ADDRESS             METHOD
        
        hostssl   all        rubackup_backuper   127.0.0.1/32        cert     clientcert=verify-ca

        Если параметр clientcert не указан, сервер не требует и не проверяет сертификат клиента.

  5. Для применения изменений перезапустите сервер:

    sudo systemctl restart postgresql

2. Настройка SSL-соединения на узле с модулем PostgreSQL

  1. Из Центра сертификации перенесите в любую папку на узле с модулем PostgreSQL:

    • сертификат Центра сертификации (например, ca.crt);

    • сертификат для модуля PostgreSQL (например, postgresql.crt);

    • сгенерированный закрытый ключ для модуля PostgreSQL (например, postgresql.key).

  2. Для сертификатов и закрытого ключа установите:

    • доступ на чтение и запись только для владельцев:

      chmod 600 ca.crt postgresql.crt postgresql.key
    • владельца и группу пользователя:

      chown suser:suser ca.crt postgresql.crt postgresql.key

      где suser — пользователь, от имени которого будет запущен клиент СРК с установленным модулем PostgreSQL.

  3. Для настройки SSL-соединения с СУБД в конфигурационном файле /opt/rubackup/etc/rb_module_postgresql.conf (см. Конфигурационный файл модуля) укажите:

    • режим SSL в параметре sslmode;

    • путь до сертификата Центра сертификации в параметре sslrootcert;

    • путь до сертификата для модуля PostgreSQL в параметре sslcert;

    • путь до сгенерированного закрытого ключа для модуля PostgreSQL в параметре sslkey.


1. Расположение файла может отличаться в зависимости от дистрибутива Linux и версии PostgreSQL.