19.3. Подключения и аутентификация #

19.3.1. Параметры подключений #

listen_addresses (string) #

Задаёт адреса TCP/IP, по которым сервер будет принимать подключения клиентских приложений. Это значение принимает форму списка, разделённого запятыми, из имён и/или числовых IP-адресов узлов. Особый элемент, *, обозначает все имеющиеся IP-интерфейсы. Запись 0.0.0.0 позволяет задействовать все адреса IPv4, а :: — все адреса IPv6. Если список пуст, сервер не будет привязываться ни к какому IP-интерфейсу, а значит, подключиться к нему можно будет только через Unix-сокеты. При непустом списке сервер запустится, если сможет принимать подключения хотя бы по одному адресу TCP/IP. Предупреждение будет выдано для любого адреса TCP/IP, который невозможно открыть. По умолчанию этот параметр содержит localhost, что допускает подключение к серверу по TCP/IP только через локальный интерфейс «замыкания».

Хотя механизм аутентификации клиентов (см. Главу 20) позволяет гибко управлять доступом пользователей к серверу, параметр listen_addresses может ограничить интерфейсы, через которые будут приниматься соединения, что бывает полезно для предотвращения злонамеренных попыток подключения через незащищённые сетевые интерфейсы. Этот параметр можно задать только при запуске сервера.

Примечание

При подготовке отказоустойчивого кластера с помощью bihactl этот параметр изменяется автоматически. Не рекомендуется изменять его вручную, поскольку это может повлиять на нормальную работу кластера.

port (integer) #

TCP-порт, открываемый сервером; по умолчанию, 5432. Заметьте, что этот порт используется для всех IP-адресов, через которые сервер принимает подключения. Этот параметр можно задать только при запуске сервера.

Примечание

При подготовке отказоустойчивого кластера с помощью bihactl этот параметр изменяется автоматически. Не рекомендуется изменять его вручную, поскольку это может повлиять на нормальную работу кластера.

max_connections (integer) #

Определяет максимальное число одновременных подключений к серверу БД. По умолчанию обычно это 100 подключений, но это число может быть меньше, если ядро накладывает свои ограничения (это определяется в процессе initdb). Этот параметр можно задать только при запуске сервера.

Для ведомого сервера значение этого параметра должно быть больше или равно значению на ведущем. В противном случае на ведомом сервере не будут разрешены запросы.

reserved_connections (integer) #

Определяет количество «слотов» подключений, которые PostgreSQL будет резервировать для ролей с правами роли pg_use_reserved_connections. Когда число активных одновременных подключений больше superuser_reserved_connections, но меньше суммы superuser_reserved_connections и reserved_connections, принимаются только подключения суперпользователей и ролей с правами pg_use_reserved_connections. Если количество подключений меньше или равно superuser_reserved_connections, принимаются только подключения суперпользователей.

По умолчанию подключения не резервируются (параметр имеет нулевое значение). Это значение должно быть меньше значения max_connections минус superuser_reserved_connections. Задать этот параметр можно только при запуске сервера.

superuser_reserved_connections (integer) #

Определяет количество «слотов» подключений, которые Postgres Pro будет резервировать для суперпользователей. При этом всего одновременно активными могут быть максимум max_connections подключений. Когда число активных одновременных подключений больше или равно max_connections минус superuser_reserved_connections, принимаются только подключения суперпользователей. Слоты подключения, зарезервированные этим параметром, предназначены для использования в экстренных случаях, когда закончатся слоты, зарезервированные reserved_connections.

По умолчанию резервируются три соединения. Это значение должно быть меньше значения max_connections минус reserved_connections. Задать этот параметр можно только при запуске сервера.

max_sessions (integer) #

Максимальное количество клиентских сеансов, которые могут обслуживаться одним процессом при включении пула соединений. От этого параметра не зависит нагрузка процессора или использование памяти, так что и при большом значении max_sessions производительность не должна снизиться. При достижении предела max_sessions обслуживающий процесс прекращает принимать подключения и пока минимум одно из соединений не будет завершено, попытки подключиться к этому процессу будут вызывать ошибку.

Значение по умолчанию — 1000. Этот параметр можно задать только при запуске сервера.

session_pool_size (integer) #

Включает пул соединений и определяет максимальное количество обслуживающих процессов, которые могут использоваться клиентскими сеансами для отдельно взятой базы данных.

Значение по умолчанию — 0, то есть пул соединений отключён.

connection_pool_workers (integer) #

Число приёмников, обрабатывающих стартовые пакеты клиентов. Если пул соединений включён, сервер Postgres Pro Enterprise передаёт все стартовые пакеты клиентов приёмникам. Приёмник определяет, какой пользователь и к какой базе данных подключается, а затем передаёт это подключение соответствующему обслуживающему процессу, выбираемому из пула в соответствии с политикой session_schedule. Этот подход позволяет избежать замедления сервера при подключении клиентов через медленную или ненадёжную сеть.

Значение по умолчанию — 2.

dedicated_databases (string) #

Задаёт список баз данных, для которых пул соединений не задействуется вне зависимости от значения session_pool_size. Для таких баз данных каждому соединению выделяется отдельный обслуживающий процесс. Пул соединений по умолчанию отключён для баз данных template0, template1 и postgres.

dedicated_users (string) #

Задаёт список пользователей, для которых пул соединений не задействуется вне зависимости от значения session_pool_size. Для таких пользователей каждому соединению выделяется отдельный обслуживающий процесс. По умолчанию пул соединений отключён для пользователя postgres.

restart_pooler_on_reload (boolean) #

Перезагружать рабочие процессы пула при вызове pg_reload_conf(). По умолчанию: false (выкл.).

hold_prepared_transactions (boolean) #

Не производить переключение сеансов в обслуживающем процессе, пока в текущем сеансе есть незавершённые подготовленные транзакции. Переключение сеансов с конфликтующими подготовленными транзакциями может привести к появлению неявных взаимоблокировок.

По умолчанию: off (выкл.)

session_schedule (enum) #

Задаёт политику распределения сеансов между обслуживающими процессами при включённом пуле соединений:

  • round-robin — распределять сеансы между обслуживающими процессами по кругу.

  • random — выбирать обслуживающий процесс в пуле случайным образом.

  • load-balancing — выбирать обслуживающий процесс с наименьшей средней нагрузкой. Нагрузка процесса определяется по числу событий готовности на каждой итерации переключения сеансов.

По умолчанию выбирается политика round-robin.

idle_pool_backend_timeout (integer) #

Завершать простаивающий обслуживающий процесс в пуле по истечении заданного времени, в миллисекундах. Значение по умолчанию — 0, то есть обслуживающие процессы не завершаются никогда.

unix_socket_directories (string) #

Задаёт каталог Unix-сокета, через который сервер будет принимать подключения клиентских приложений. Создать несколько сокетов можно, перечислив в этом значении несколько каталогов через запятую. Пробелы между элементами этого списка игнорируются; если в пути каталога содержатся пробелы, его нужно заключать в двойные кавычки. При пустом значении сервер не будет работать с Unix-сокетами, в этом случае к нему можно будет подключиться только по TCP/IP.

Значение, которое начинается с @, указывает, что будет создан сокет домена Unix в абстрактном пространстве имён (в настоящее время поддерживается только в Linux). Такое значение задаёт не «каталог», а префикс, из которого получается фактическое имя сокета таким же образом, как и для пространства имён файловой системы. Хотя префикс имени абстрактного сокета может быть произвольным, поскольку он не задаёт путь в файловой системе, принято использовать значения, подобные путям в файловой системе, такие как @/tmp.

Значение по умолчанию обычно /tmp, но оно может быть изменено во время сборки. В Windows по умолчанию это значение не задано, то есть сокет домена Unix не создаётся. Этот параметр можно установить только при запуске сервера.

Помимо самого файла сокета, который называется .s.PGSQL.nnnn (где nnnn — номер порта сервера), в каждом каталоге unix_socket_directories создаётся обычный файл .s.PGSQL.nnnn.lock. Ни в коем случае не удаляйте эти файлы вручную. Для сокетов в абстрактном пространстве имён файл .lock не создаётся.

unix_socket_group (string) #

Задаёт группу-владельца Unix-сокетов. (Пользователем-владельцем сокетов всегда будет пользователь, запускающий сервер.) В сочетании с unix_socket_permissions данный параметр можно использовать как дополнительный механизм управления доступом к Unix-сокетам. По умолчанию он содержит пустую строку, то есть группой-владельцем становится основная группа пользователя, запускающего сервер. Задать этот параметр можно только при запуске сервера.

В Windows данный параметр не поддерживается, так что любое его значение ни на что не влияет. Кроме того, сокеты в абстрактном пространстве имён не имеют владельца файла, поэтому для таких сокетов данный параметр также игнорируется.

unix_socket_permissions (integer) #

Задаёт права доступа к Unix-сокетам. Для Unix-сокетов применяется обычный набор разрешений Unix. Значение параметра ожидается в числовом виде, который принимают функции chmod и umask. (Для применения обычного восьмеричного формата число должно начинаться с 0 (нуля).)

По умолчанию действуют разрешения 0777, при которых подключаться к сокету могут все. Другие разумные варианты — 0770 (доступ имеет только пользователь и группа, см. также unix_socket_group) и 0700 (только пользователь). (Заметьте, что для Unix-сокетов требуется только право на запись, так что добавлять или отзывать права на чтение/выполнение не имеет смысла.)

Этот механизм управления доступом не зависит от описанного в Главе 20.

Этот параметр можно задать только при запуске сервера.

Данный параметр неприменим для некоторых систем, в частности, Solaris (а именно Solaris 10), которые полностью игнорируют разрешения для сокетов. В таких системах примерно тот же эффект можно получить, указав в параметре unix_socket_directories каталог, доступ к которому ограничен должным образом.

Сокеты в абстрактном пространстве имён не имеют прав доступа к файлам, поэтому для таких сокетов данный параметр также игнорируется.

bonjour (boolean) #

Включает объявления о существовании сервера посредством Bonjour. По умолчанию выключен. Задать этот параметр можно только при запуске сервера.

bonjour_name (string) #

Задаёт имя службы в среде Bonjour. Если значение этого параметра — пустая строка ('') (это значение по умолчанию), в качестве этого имени используется имя компьютера. Этот параметр игнорируется, если сервер был скомпилирован без поддержки Bonjour. Задать этот параметр можно только при запуске сервера.

19.3.2. Параметры TCP #

tcp_keepalives_idle (integer) #

Задаёт период отсутствия сетевой активности, по истечении которого операционная система должна отправить клиенту TCP-сигнал сохранения соединения. Если это значение задаётся без единиц измерения, оно считается заданным в секундах. При значении 0 (по умолчанию) действует величина, принятая по умолчанию в операционной системе. В Windows при присваивании нулевого значения этот период устанавливается равным 2 часам, так как Windows не позволяет прочитать системное значение по умолчанию. Этот параметр поддерживается только в системах, воспринимающих параметр сокета TCP_KEEPIDLE или равнозначный, а также в Windows; в других системах он должен быть равен нулю. В сеансах, подключённых через Unix-сокеты, он игнорируется и всегда считается равным 0.

tcp_keepalives_interval (integer) #

Задаёт интервал, по истечении которого следует повторять TCP-сигнал сохранения соединения, если от клиента не получено подтверждение предыдущего сигнала. Если это значение задаётся без единиц измерения, оно считается заданным в секундах. При значении 0 (по умолчанию) действует величина, принятая по умолчанию в операционной системе. В Windows при нулевом значении этот интервал устанавливается равным 1 секунде, так как Windows не позволяет прочитать системное значение по умолчанию. Этот параметр поддерживается только в системах, воспринимающих параметр сокета TCP_KEEPINTVL или равнозначный, а также в Windows; в других системах он должен быть равен нулю. В сеансах, подключённых через Unix-сокеты, он игнорируется и всегда считается равным 0.

tcp_keepalives_count (integer) #

Задаёт число TCP-сигналов сохранения соединения, которые могут быть потеряны до того, как соединение сервера с клиентом будет признано прерванным. При значении 0 (по умолчанию) действует величина, принятая по умолчанию в операционной системе. Этот параметр поддерживается только в системах, воспринимающих параметр сокета TCP_KEEPCNT или равнозначный (Windows не входит в их число); в других системах он должен быть равен нулю. В сеансах, подключённых через Unix-сокеты, он игнорируется и всегда считается равным 0.

tcp_user_timeout (integer) #

Задаёт интервал, в течение которого переданные данные могут оставаться неподтверждёнными, прежде чем будет принято решение о принудительном закрытии TCP-соединения. Если это значение задаётся без единиц измерения, оно считается заданным в миллисекундах. При значении 0 (по умолчанию) действует величина, принятая по умолчанию в операционной системе. Этот параметр поддерживается только в системах, воспринимающих параметр сокета TCP_USER_TIMEOUT (Windows не входит в их число); в других системах он должен быть равен нулю. В сеансах, подключённых через доменные сокеты Unix, он игнорируется и всегда считается равным 0.

client_connection_check_interval (integer) #

Задаёт интервал между необязательными проверками соединения сервера с клиентом в процессе выполнения запроса. Такая проверка, заключающаяся в опросе состояния сокета, позволяет раньше прерывать длительные запросы, если ядро сообщает, что соединение закрыто.

Эта функциональность зависит от событий ядра, имеющихся только в Linux, macOS, illumos и операционных системах семейства BSD, и в настоящее время недоступна в других системах.

Если это значение задаётся без единиц измерения, оно считается заданным в миллисекундах. Значение по умолчанию — 0, то есть проверка соединения отключена. Если соединение не проверяется, сервер обнаружит разрыв соединения только при следующем обращении к сокету, когда будет передавать, ожидать или читать данные.

Чтобы само ядро могло надёжно и в течение известного периода времени обнаруживать потерянные TCP-соединения во всех сценариях, включая сбой сети, также может потребоваться изменить параметры сохранения TCP-соединения в операционной системе или параметры Postgres Pro tcp_keepalives_idle, tcp_keepalives_interval и tcp_keepalives_count.

19.3.3. Аутентификация #

authentication_timeout (integer) #

Максимальное время, за которое должна произойти аутентификация. Если потенциальный клиент не сможет пройти проверку подлинности за это время, сервер закроет соединение. Благодаря этому зависшие при подключении клиенты не будут занимать соединения неограниченно долго. Если это значение задаётся без единиц измерения, оно считается заданным в миллисекундах. Значение этого параметра по умолчанию — одна минута (1m). Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

password_encryption (enum) #

Когда пароль передаётся в CREATE ROLE или ALTER ROLE, этот параметр определяет для него алгоритм шифрования. При значении scram-sha-256 задаётся алгоритм шифрования SCRAM-SHA-256, а при значении md5 пароль хранится в виде MD5 хеша. Значение по умолчанию — scram-sha-256. Тем не менее, в pg-setup для параметра --auth-host по умолчанию устанавливается значение md5, но и его можно изменить при необходимости, передав другое значение в initdb.

Учтите, что старые клиенты могут не поддерживать механизм проверки подлинности SCRAM и поэтому не будут работать с паролями, зашифрованными алгоритмом SCRAM-SHA-256. За подробностями обратитесь к Разделу 20.5.

scram_iterations (integer) #

Количество вычислительных итераций при шифровании пароля с использованием SCRAM-SHA-256. Значение по умолчанию — 4096. Большее количество итераций обеспечивает дополнительную защиту сохранённых паролей от атак полным перебором, но замедляет аутентификацию. Изменение значения не влияет на существующие пароли, зашифрованные алгоритмом SCRAM-SHA-256, поскольку количество итераций фиксируется во время шифрования. Чтобы использовать изменённое значение, необходимо задать новый пароль.

krb_server_keyfile (string) #

Задаёт расположение файла ключей Kerberos для данного сервера. Значение по умолчанию: FILE:/usr/local/pgsql/etc/krb5.keytab (каталог определяется значением параметра sysconfdir в процессе сборки; чтобы его узнать, выполните pg_config --sysconfdir). Если этот параметр содержит пустую строку, используется значение по умолчанию, зависящее от системы. Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера. За подробностями обратитесь к Разделу 20.6.

krb_caseins_users (boolean) #

Определяет, должны ли имена пользователей GSSAPI обрабатываться без учёта регистра. По умолчанию значение этого параметра — off (регистр учитывается). Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

gss_accept_delegation (boolean) #

Определяет, должно ли приниматься делегирование учётных данных GSSAPI от клиента. По умолчанию значение этого параметра — off, то есть учётные данные клиента не принимаются. Изменение этого параметра на on заставит сервер принимать учётные данные, переданные ему от клиента. Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

db_user_namespace (boolean) #

Этот параметр позволяет относить имена пользователей к базам данных. По умолчанию он имеет значение off (выключен). Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

Если он включён, имена создаваемых пользователей должны иметь вид имя_пользователя@база_данных. Когда подключающийся клиент передаёт имя_пользователя, к этому имени добавляется @ с именем базы данных, и сервер идентифицирует пользователя по этому полному имени. Заметьте, что для создания пользователя с именем, содержащим @, в среде SQL потребуется заключить это имя в кавычки.

Когда этот параметр включён, он не мешает создавать и использовать обычных глобальных пользователей. Чтобы подключиться с таким именем пользователя, достаточно добавить к имени @, например так: joe@. Получив такое имя, сервер отбросит @, и будет идентифицировать пользователя по начальному имени.

Параметр db_user_namespace порождает расхождение между именами пользователей на стороне сервера и клиента. Но проверки подлинности всегда выполняются с именем с точки зрения сервера, так что, настраивая аутентификацию, следует указывать серверное представление имени, а не клиентское. Так как метод аутентификации md5 подмешивает имя пользователя в качестве соли и на стороне сервера, и на стороне клиента, при включённом параметре db_user_namespace использовать md5 невозможно.

Примечание

Эта возможность предлагается в качестве временной меры, пока не будет найдено полноценное решение. Тогда этот параметр будет ликвидирован.

19.3.4. SSL #

За дополнительной информацией о настройке SSL обратитесь к Разделу 18.9. Параметры конфигурации для управления шифрованием передачи с использованием протоколов TLS называются ssl по историческим причинам, несмотря на то, что протокол SSL признан устаревшим. SSL в этом контексте используется взаимозаменяемо с TLS.

ssl (boolean) #

Разрешает подключения SSL. Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. Значение по умолчанию — off.

ssl_ca_file (string) #

Задаёт имя файла, содержащего сертификаты центров сертификации (ЦС) для SSL-сервера. При указании относительного пути он рассматривается от каталога данных. Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. По умолчанию этот параметр пуст, что означает, что файл сертификатов ЦС не загружается и проверка клиентских сертификатов не производится.

ssl_cert_file (string) #

Задаёт имя файла, содержащего сертификат этого SSL-сервера. При указании относительного пути он рассматривается от каталога данных. Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. Значение по умолчанию — server.crt.

ssl_crl_file (string) #

Задаёт имя файла, содержащего список отзыва клиентских сертификатов (CRL, Certificate Revocation List) для SSL. При указании относительного пути он рассматривается от каталога данных. Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. По умолчанию этот параметр пуст, что означает, что файл CRL не загружается (если не задан параметр ssl_crl_dir).

ssl_crl_dir (string) #

Задаёт имя каталога, содержащего список отзыва клиентских сертификатов (CRL, Certificate Revocation List) для SSL. При указании относительного пути он рассматривается от каталога данных. Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. По умолчанию этот параметр пуст, что означает, что файл CRL не загружается (если не задан параметр ssl_crl_file).

Каталог необходимо подготовить с помощью команды OpenSSL openssl rehash или c_rehash. За подробностями обратитесь к документации OpenSSL.

Когда применяется этот параметр, списки отзыва сертификатов (Certificate Revocation List, CRL) в указанном каталоге загружаются при необходимости во время подключения. Новые CRL в этом каталоге будут использоваться сразу по мере добавления. Это отличает данный параметр от ssl_crl_file, с которым CRL загружаются из файла во время запуска сервера или при перезагрузке конфигурации. Эти параметры можно использовать вместе.

ssl_key_file (string) #

Задаёт имя файла, содержащего закрытый ключ SSL-сервера. При указании относительного пути он рассматривается от каталога данных. Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. Значение по умолчанию — server.key.

ssl_ciphers (string) #

Задаёт список наборов шифров SSL, которые могут применяться для SSL-соединений. Синтаксис этого параметра и список поддерживаемых значений можно найти на странице ciphers руководства по OpenSSL. Этот параметр действует только для подключений TLS версии 1.2 и ниже. Для подключений TLS версии 1.3 возможность выбора шифров в настоящее время отсутствует. Значение по умолчанию — HIGH:MEDIUM:+3DES:!aNULL. Обычно оно вполне приемлемо при отсутствии особых требований по безопасности.

Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

Объяснение значения по умолчанию:

HIGH #

Наборы шифров, в которых используются шифры из группы высокого уровня (HIGH), (например: AES, Camellia, 3DES)

MEDIUM #

Наборы шифров, в которых используются шифры из группы среднего уровня (MEDIUM) (например, RC4, SEED)

+3DES #

Порядок шифров для группы HIGH по умолчанию в OpenSSL определён некорректно. В нём 3DES оказывается выше AES128, что неправильно, так как он считается менее безопасным, чем AES128, и работает гораздо медленнее. Включение +3DES меняет этот порядок, чтобы данный алгоритм следовал после всех шифров групп HIGH и MEDIUM.

!aNULL #

Отключает наборы анонимных шифров, не требующие проверки подлинности. Такие наборы уязвимы для атак с посредником (MITM), поэтому использовать их не следует.

Конкретные наборы шифров и их свойства очень различаются от версии к версии OpenSSL. Чтобы получить фактическую информацию о них для текущей установленной версии OpenSSL, выполните команду openssl ciphers -v 'HIGH:MEDIUM:+3DES:!aNULL'. Учтите, что этот список фильтруется во время выполнения, в зависимости от типа ключа сервера.

ssl_prefer_server_ciphers (boolean) #

Определяет, должны ли шифры SSL сервера предпочитаться клиентским. Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. Значение по умолчанию — on.

До версии Postgres Pro 9.4 этот параметр отсутствовал и предпочтение отдавалось выбору клиента. Введён этот параметр в основном для обеспечения совместимости с этими версиями. Обычно лучше использовать конфигурацию сервера, так как в конфигурации на стороне клиента более вероятны ошибки.

ssl_ecdh_curve (string) #

Задаёт имя кривой для использования при обмене ключами ECDH. Эту кривую должны поддерживать все подключающиеся клиенты. Это не обязательно должна быть кривая, с которой был получен ключ сервера. Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. Значение по умолчанию — prime256v1.

Наиболее распространённые кривые в OpenSSLprime256v1 (NIST P-256), secp384r1 (NIST P-384), secp521r1 (NIST P-521). Полный список доступных кривых можно получить командой openssl ecparam -list_curves. Однако не все из них пригодны для TLS.

ssl_min_protocol_version (enum) #

Задаёт минимальную версию протокола SSL/TLS, которая может использоваться. В настоящее время допускаются версии TLSv1, TLSv1.1, TLSv1.2, TLSv1.3. Старые версии библиотеки OpenSSL могут не поддерживать все варианты; при выборе неподдерживаемой версии будет выдана ошибка. Версии протокола до TLS 1.0, а именно SSL v.2 и v.3, не будут использоваться в любом случае.

Значение по умолчанию — TLSv1.2, что соответствует рекомендациям, актуальным в индустрии на момент написания этой документации.

Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

ssl_max_protocol_version (enum) #

Задаёт максимальную версию протокола SSL/TLS, которая может использоваться. Допускаются те же версии, что и для ssl_min_protocol_version, а также пустая строка, обозначающая отсутствие ограничения версии. По умолчанию версии не ограничиваются. Устанавливать максимальную возможную версию протокола полезно прежде всего для тестирования или в случае проблем при использовании нового протокола какими-то компонентами.

Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

ssl_dh_params_file (string) #

Задаёт имя файла с параметрами алгоритма Диффи-Хеллмана, применяемого для так называемого эфемерного семейства DH шифров SSL. По умолчанию значение пустое, то есть используются стандартные параметры DH, заданные при компиляции. Использование нестандартных параметров DH защищает от атаки, рассчитанной на взлом хорошо известных встроенных параметров DH. Создать собственный файл с параметрами DH можно, выполнив команду openssl dhparam -out dhparams.pem 2048.

Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

ssl_passphrase_command (string) #

Задаёт внешнюю команду, которая будет вызываться, когда потребуется пароль для расшифровывания SSL-файла, например закрытого ключа. По умолчанию этот параметр не определён, то есть пароль будет запрашиваться встроенным механизмом.

Эта команда должна вывести пароль на устройство стандартного вывода и завершиться с кодом 0. В строке параметра %p заменяется строкой приглашения. (Напишите %%, чтобы вывести % буквально.) Заметьте, что строка приглашения, вероятно, будет содержать пробелы, так что её нужно будет заключить в кавычки. Если в конце добавлен один перевод строки, он будет отфильтрован при выводе.

Эта команда не обязательно должна запрашивать пароль у пользователя. Она может считать его из файла, извлечь из системной связки ключей или получить другими подобными средствами. Ответственность за выбор достаточно безопасного механизма возлагается на пользователя.

Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.

ssl_passphrase_command_supports_reload (boolean) #

Этот параметр определяет, будет ли заданная параметром ssl_passphrase_command команда, запрашивающая пароль, также вызываться при перезагрузке конфигурации, если для файла ключа требуется пароль. Когда этот параметр отключён (по умолчанию), команда ssl_passphrase_command будет игнорироваться при перезагрузке, и конфигурация SSL не будет обновляться, если требуется пароль. Это значение подходит для команды, требующей для ввода пароля наличия терминала TTY, который может быть недоступен в процессе работы сервера. Включение данного параметра может быть уместно, если, например, пароль считывается из файла.

Задать этот параметр можно только в postgresql.conf или в командной строке при запуске сервера.