Перейти к основному содержимому

sslinfo — получение информации о SSL клиента

примечание

Эта страница переведена при помощи нейросети GigaChat.

Модуль предоставляет сведения о сертификате SSL, который использовал клиент при подключении к серверу PostgreSQL. Если текущее соединение не осуществляется через SSL, большинство функций этого модуля вернут значение NULL, делая его практически бесполезным.

Большинство данных, доступных через этот модуль, также можно получить с помощью встроенного системного представления pg_stat_ssl.

Данный модуль не будет компилироваться, если сборка PostgreSQL была выполнена с опцией --with-ssl=openssl.

Предоставляемые функции

ssl_is_used() returns boolean

: Возвращает true, если текущее соединение с сервером использует SSL, и false в другом случае.

ssl_version() returns text

: Возвращает имя протокола, используемого для соединения SSL (например, TLSv1.0, TLSv1.1, TLSv1.2 или TLSv1.3).

ssl_cipher() returns text

: Возвращает название шифра, используемого для соединения SSL (например, DHE-RSA-AES256-SHA).

ssl_client_cert_present() returns boolean

: Возвращает true, если текущий клиент представил действительный сертификат SSL клиента серверу, и false в противном случае. (Сервер может быть или не быть настроен для требования сертификата клиента.)

ssl_client_serial() returns numeric

: Возвращает серийный номер текущего сертификата клиента. Комбинация серийного номера сертификата и эмитента сертификата гарантированно уникально идентифицирует сертификат (но не его владельца – владелец должен регулярно менять свои ключи и получать новые сертификаты от эмитента).

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

ssl_client_dn() returns text

: Возвращает полный субъект текущего сертификата клиента, преобразуя символьные данные в текущую кодировку базы данных. Предполагается, что если используется небуквенные символы в именах сертификатов, база данных также способна представлять эти символы. Если база данных использует кодировку SQL_ASCII, небуквенные символы в имени будут представлены как последовательности UTF-8.

Результат выглядит так /CN=Somebody /C=Some country/O=Some organization.

ssl_issuer_dn() returns text

: Возвращает полное имя эмитента текущего клиентского сертификата, преобразуя символьные данные в текущую кодировку базы данных. Преобразования кодировки обрабатываются так же, как и для ssl_client_dn.

Комбинация возвращаемого значения этой функции с серийным номером сертификата однозначно идентифицирует сертификат.

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

ssl_client_dn_field(fieldname text) returns text

: Эта функция возвращает значение указанного поля в сертификате субъекта или NULL, если поле отсутствует. Имена полей являются строковыми константами, которые преобразуются в идентификаторы объектов ASN1 с использованием базы данных объектов OpenSSL. Допустимы следующие значения:

commonName (alias CN)
surname (alias SN)
name
givenName (alias GN)
countryName (alias C)
localityName (alias L)
stateOrProvinceName (alias ST)
organizationName (alias O)
organizationalUnitName (alias OU)
title
description
initials
postalCode
streetAddress
generationQualifier
description
dnQualifier
x500UniqueIdentifier
pseudonym
role
emailAddress

Все эти поля необязательны, за исключением commonName. Это полностью зависит от политики центра сертификации, какие из них будут включены, а какие нет. Однако смысл этих полей строго определен стандартами X.500 и X.509, поэтому нельзя присвоить им произвольное значение.

ssl_issuer_field(fieldname text) returns text

: То же самое, что и ssl_client_dn_field, но для выдавшего сертификат, а не для субъекта сертификата.

ssl_extension_info() returns setof record

: Предоставляет информацию о расширениях клиентского сертификата: имя расширения, значение расширения и является ли это критическим расширением.