F.53. sslinfo — получить информацию о клиенте SSL#

F.53. sslinfo — получить информацию о клиенте SSL

F.53. sslinfo — получить информацию о клиенте SSL #

Модуль sslinfo предоставляет информацию о SSL-сертификате, предоставленном текущим клиентом при подключении к Tantor BE. Модуль бесполезен (большинство функций вернут NULL), если текущее подключение не использует SSL.

Некоторую информацию, доступную через этот модуль, также можно получить с помощью встроенного системного представления pg_stat_ssl.

Это расширение не будет собираться вообще, если установка не была настроена с --with-ssl=openssl.

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

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

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

Результат выглядит как /CN=Кто-то /C=Некоторая страна/O=Некоторая организация.

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

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

F.53.2. Автор #

Виктор Вагнер , Cryptocom LTD

Дмитрий Воронин

E-Mail группы разработки Cryptocom OpenSSL: