$ssl_client_escaped_cert

Переменная $ssl_client_escaped_cert содержит клиентский сертификат в формате PEM-encoded и URL-escaped, отправленный клиентом во время SSL-рукопожатия. — NGINX Core (HTTP)

$ssl_client_escaped_cert NGINX Core (HTTP)

Описание

Переменная $ssl_client_escaped_cert используется в контексте HTTP-сервера, когда HTTPS-соединения применяют аутентификацию по клиентским сертификатам. Когда клиент устанавливает защищённое соединение и предоставляет сертификат, эта переменная фиксирует полные сведения о сертификате в формате, который одновременно является URL-encoded и безопасно экранирован для передачи. Это особенно полезно для ведения журналов или передачи в качестве параметров запроса без возникновения синтаксических ошибок в URL. Эта переменная устанавливается только в случае, если проверка клиентского сертификата включена и при SSL-рукопожатии представлен действительный клиентский сертификат. Она содержит закодированное содержимое сертификата клиента, позволяя приложениям на стороне сервера использовать идентичность клиента для целей авторизации или управления доступом. Типичные значения этой переменной включают фактические данные сертификата в формате PEM-encoded, которые состоят из компонентов сертификата, закодированных в Base64-encoded, и заключённых между соответствующими PEM-заголовком и PEM-футером. Если клиентский сертификат не представлен, переменная остаётся пустой. В сочетании с другими переменными, связанными с SSL, такими как $ssl_client_cert и $ssl_client_verify, $ssl_client_escaped_cert обеспечивает всесторонний механизм управления проверкой клиента в защищённых средах, охватывающий сценарии, требующие не только подтверждения личности, но и безопасной передачи данных сертификата для дальнейшей обработки.

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

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/server.key;
    ssl_client_certificate /path/to/client_ca.crt;
    ssl_verify_client on;

    location /secure-data {
        add_header X-Client-Cert "$ssl_client_escaped_cert";
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location

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

Использование этой переменной без надлежащего экранирования в контексте вашего приложения может привести к некорректно сформированным URLs.

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