$ssl_client_i_dn

Переменная $ssl_client_i_dn содержит Identity Distinguished Name (DN) клиента во время SSL/TLS-сессий. — NGINX Core (HTTP)

$ssl_client_i_dn NGINX Core (HTTP)

Описание

Переменная $ssl_client_i_dn заполняется при установлении SSL/TLS-соединения с использованием клиентских сертификатов. Конкретно, она содержит distinguished name (DN) клиента, представленный сертификатом клиента во время TLS handshake process. Эта переменная доступна прежде всего в контекстах, требующих аутентификации клиента по SSL/TLS, которую нужно включить в конфигурации NGINX с помощью директив, таких как 'ssl' и 'ssl_verify_client'. Как правило, DN будет включать информацию, такую как общее имя клиента (CN), организация (O) и страна (C), отформатированные в соответствии со стандартом X.500. Когда переменная установлена, её можно использовать в различных конфигурациях — от настройки контроля доступа на основе идентичности клиента до кастомизации ответов в зависимости от того, кто является клиентом. Однако если клиентские сертификаты не используются в SSL/TLS-соединении, эта переменная не будет содержать данных. Важно отметить, что эта переменная зависит от успешной аутентификации клиента; если клиент не предоставит действительный сертификат или если проверка не пройдет, $ssl_client_i_dn будет пустой. Наличие этой переменной критично для приложений, где требуется проверка личности пользователя на основе клиентских сертификатов.

Пример конфига

server {
    listen 443 ssl;
    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/server.key;
    ssl_verify_client on;

    location / {
        if ($ssl_client_i_dn) {
            return 200 'Client DN: $ssl_client_i_dn';
        }
        return 403 'Access denied';
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Убедитесь, что проверка клиентских сертификатов включена с помощью 'ssl_verify_client on'; в противном случае переменная останется пустой.

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

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