$ssl_client_raw_cert

Переменная $ssl_client_raw_cert содержит необработанные байты SSL-сертификата клиента. — NGINX Core (HTTP)

$ssl_client_raw_cert NGINX Core (HTTP)

Описание

Переменная $ssl_client_raw_cert заполняется, когда NGINX настроен на обработку SSL/TLS-соединений и клиент предоставляет сертификат для аутентификации. Эта переменная становится доступной в контексте запроса, обрабатываемого по SSL-соединению, когда директива 'ssl_verify_client' установлена в 'on' или 'optional'. Необработанный клиентский сертификат выводится как одна строка, закодированная в base64, которую можно использовать для логирования, управления доступом или любой специфичной для приложения обработки, требующей информации о сертификате клиента. Эта переменная особенно полезна в защищённых средах, где реализована взаимная TLS-аутентификация (mTLS), поскольку она позволяет администраторам серверов и разработчикам приложений устанавливать правила на основе сертификата клиента, например логирование конфиденциальной информации для аудита или динамическое изменение обработки запроса на основе действительности сертификата или его атрибутов. Типичные значения этой переменной будут в формате base64, представляя X.509-сертификат клиента, переданный во время SSL handshake, что делает её критически важной в ситуациях, требующих проверки личности между доверенными сторонами. На практике NGINX может напрямую записывать содержимое сертификата в логи или условно перенаправлять запросы на основе атрибутов сертификата (например, subject или issuer). Параметры, такие как 'ssl_verify_client', требуют тщательной настройки, поскольку они могут напрямую повлиять на безопасность приложения.

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

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

    location / {
        add_header X-Client-Cert $ssl_client_raw_cert;
        # Additional processing...
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

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

Эта переменная доступна только в серверных контекстах с включённым SSL; в HTTP-контекстах её не будет.

Логирование необработанных клиентских сертификатов может раскрыть конфиденциальную информацию; убедитесь в соблюдении политик безопасности.