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

sslinfo. Информация о клиентском SSL-сертификате

В исходном дистрибутиве установлено по умолчанию: нет.

Связанные компоненты: отсутствуют.

Схема размещения: ext.

Модуль sslinfo выдает информацию о SSL-сертификате, который был представлен текущим клиентом при подключении к Pangolin.

Примечание:

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

Часть информации, выдаваемой этим модулем, можно получить через встроенное системное представление pg_stat_ssl.

Имя функцииВозвращаемое значениеОписание
ssl_is_usedbooleanТекущее подключение использует протокол SSL
ssl_versiontextИмя протокола, по которому организовано SSL-подключение (TLSv1.0, TLSv1.1 или TLSv1.2)
ssl_ciphertextИмя шифра, используемого для SSL-подключения (например, DHE-RSA-AES256-SHA)
ssl_client_cert_presentbooleantrue, если текущий клиент предоставил серверу действительный клиентский SSL-сертификат, иначе – false;
сервер может требовать или не требовать предоставления клиентского сертификата
ssl_client_serialnumericСерийный номер текущего клиентского сертификата; сочетание серийного номера сертификата с выдавшим его центром сертификации гарантирует однозначную идентификацию сертификата (не владелец – он должен регулярно менять свои ключи и получать сертификаты в центре сертификации)
ssl_client_dntextПолное имя субъекта из текущего клиентского сертификата, преобразуя символьные данные в кодировку текущей базы данных; предполагается, что если в именах в сертификатах используются символы вне таблицы ASCII, то база данных может представить эти символы; если в базе используется кодировка SQL_ASCII, символы вне ASCII в имени будут представлены последовательностями UTF-8
ssl_issuer_dntextВозвращает полное имя издателя текущего клиентского сертификата, преобразуя символьные данные в кодировку текущей базы данных; преобразования кодировки осуществляются так же, как и в ssl_client_dn; сочетание возвращаемого значения этой функции с серийным номером сертификата однозначно идентифицирует сертификат
ssl_client_dn_field (fieldname text)textФункция возвращает значение указанного поля данных субъекта сертификата либо NULL, если это поле отсутствует; имена полей задаются строковыми константами, которые затем преобразуются в идентификаторы объектов ASN1, используя базу данных объектов OpenSSL.
Принимаются следующие значения:
– commonName (или CN);
– surname (или SN);
– name;
– givenName (или GN);
– countryName (или C);
– localityName (или L);
– stateOrProvinceName (или ST);
– organizationName (или O);
– organizationalUnitName (или OU);
– title;
– description;
– initials;
– postalCode;
– streetAddress;
– generationQualifier;
– description;
– dnQualifier;
– x500UniqueIdentifier;
– pseudonym;
– role;
– emailAddress.
Все перечисленные поля являются необязательными, за исключением commonName. Какие из них будут включены в сертификат, зависит от политики Центра Сертификации. Значение этих полей строго определено стандартами X.500 и X.509, поэтому их нельзя интерпретировать произвольным образом
ssl_issuer_field (fieldname text)textАналог ssl_client_dn_field, но для издателя, не для субъекта сертификата
ssl_extension_infosetof recordПредоставляет информацию о расширениях клиентского сертификата:
– имя расширения;
– значение расширения;
– является ли это расширение критическим

Доработка​

Доработка не проводилась.

Ограничения​

Ограничения отсутствуют.

Установка​

Внимание!

Расширение не будет собираться, если конфигурация была произведена без ключа --with-openssl.

При наличии прав администратора СУБД включение модуля выполняется запросом:

CREATE EXTENSION sslinfo SCHEMA ext;

Настройка​

Настройка не требуется.

Использование модуля​

SELECT ssl_is_used();

Пример вывода результата выполнения запроса:

ssl_is_used
-------------
t
(1 row)
SELECT ssl_version();

Пример вывода результата выполнения запроса:

ssl_version
-------------
TLSv1.2
(1 row)
SELECT ssl_cipher();

Пример вывода результата выполнения запроса:

ssl_cipher
-----------------------------
ECDHE-RSA-AES256-GCM-SHA384
(1 row)
select ssl_client_dn();

Пример вывода результата выполнения запроса:

ssl_client_dn
--------------------------------------------------
/CN=Somebody /C=Some country/O=Some organization
(1 row)

Ссылки на документацию разработчика​

Дополнительно поставляемый модуль sslinfo: https://www.postgresql.org/docs/13/sslinfo.html.