Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PG_SSL_HBA_REJECTED Linux / DevOps

Безопасность и шифрование SSL/TLS в PostgreSQL: настройка pg_hba.conf

Обновлено: 24.08.2026
  • Передача учетных данных и чувствительных данных в открытом виде через незащищенные каналы сети.
  • Ошибки подключения: FATAL: no pg_hba.conf entry for host ..., SSL off.
  • Ошибки верификации клиентских сертификатов: SSL error: certificate verify failed.

1. Генерация и установка SSL сертификатов

# Установка прав на закрытый ключ (PostgreSQL требует строгие права 0600)
chown postgres:postgres /var/lib/postgresql/server.key /var/lib/postgresql/server.crt
chmod 600 /var/lib/postgresql/server.key

2. Включение SSL в postgresql.conf

ssl = on
ssl_cert_file = '/var/lib/postgresql/server.crt'
ssl_key_file = '/var/lib/postgresql/server.key'
ssl_ca_file = '/var/lib/postgresql/root.crt'

# Разрешить только стойкие протоколы и шифры TLS 1.3 / TLS 1.2
ssl_min_protocol_version = 'TLSv1.2'
ssl_ciphers = 'HIGH:!aNULL:!MD5:!3DES:!CAMELLIA:!SRP:!PSK'

3. Ограничение доступа через pg_hba.conf

Замените небезопасные директивы host на обязательные hostssl с современным хэшированием scram-sha-256:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             postgres                                peer

# Требовать SSL и SCRAM для всех внешних подключений
hostssl all             all             10.0.0.0/8              scram-sha-256
hostssl all             all             192.168.0.0/16          scram-sha-256

# Требовать валидацию клиентского сертификата (mTLS)
hostssl secure_db       app_user        all                     cert clientcert=verify-full

# Запретить любые незашифрованные подключения
hostnossl all           all             0.0.0.0/0               reject

4. Применение и валидация подключения

SELECT pg_reload_conf();

Проверка шифрования текущего сеанса:

SELECT ssl, version, cipher, client_dn FROM pg_stat_ssl WHERE pid = pg_backend_pid();
💡 Практика специалистов: При переходе на SCRAM-SHA-256 не забудьте выставить password_encryption = 'scram-sha-256' в postgresql.conf и переустановить пароли существующим пользователям через ALTER USER ... PASSWORD '...';

Частые вопросы (FAQ)

В чем разница между clientcert=verify-ca и clientcert=verify-full?

verify-ca проверяет только то, что клиентский сертификат подписан доверенным CA. verify-full дополнительно проверяет, что Common Name (CN) в сертификате строго совпадает с именем пользователя базы данных.

Почему после изменения pg_hba.conf новые правила не применяются?

Необходимо вызвать перезагрузку конфигурации через SELECT pg_reload_conf(); или systemctl reload postgresql. Существующие активные соединения при этом не разрываются.

Полезные материалы
Рекомендуем