$ssl_client_cert

Переменная $ssl_client_cert содержит SSL-сертификат клиента в виде PEM-кодированной строки, когда проверка SSL-клиента включена. — NGINX Core (HTTP)

$ssl_client_cert NGINX Core (HTTP)

Описание

Переменная $ssl_client_cert используется при проверке клиентского SSL-сертификата в NGINX. Эта переменная хранит SSL-сертификат клиента, предоставленный в ходе SSL-рукопожатия, в формате PEM-кодированной строки. Она устанавливается в значение сертификата клиента, когда директива 'ssl_verify_client' настроена в 'on' и сертификат успешно подтверждён. Она особенно полезна в сценариях, требующих защищённой связи, где проверка личности клиента необходима, например в API-службах или системах аутентификации пользователей. Если клиентский сертификат не предоставлен или проверка неуспешна, эта переменная будет пустой. Содержимое этой переменной может быть записано в лог, проверено в условных выражениях или при необходимости передано бэкенд-приложениям. Типичные случаи использования включают авторизацию доступа на основе атрибутов клиентского сертификата, таких как Common Name (CN) или Subject Alternative Name (SAN), что повышает безопасность на уровне приложения. Такой подход критичен для сервисов, которым необходимо надёжно удостоверять личность каждого клиента с использованием протоколов SSL/TLS.

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

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/ca.pem;
    ssl_verify_client on;

    location / {
        if ($ssl_client_cert) {
            add_header X-Client-Cert $ssl_client_cert;
        }
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Убедитесь, что ssl_verify_client установлен в 'on', чтобы $ssl_client_cert был заполнен.

$ssl_client_cert будет пустым, если клиент не представит сертификат или если проверка не пройдет.

Будьте осторожны при логировании $ssl_client_cert, поскольку он содержит конфиденциальную информацию.