$ssl_client_fingerprint

Переменная $ssl_client_fingerprint представляет отпечаток SSL-сертификата клиента. — NGINX Core (HTTP)

$ssl_client_fingerprint NGINX Core (HTTP)

Описание

Переменная $ssl_client_fingerprint используется в NGINX, когда включена аутентификация SSL-клиента. Она предоставляет уникальный отпечаток SSL-сертификата клиента, основанный на криптографическом хеше, обычно вычисляемом с помощью алгоритмов хеширования SHA-1 или SHA-256. Этот отпечаток получается из данных сертификата, в частности из структуры `tbsCertificate`. Переменная устанавливается только в случае успешного выполнения аутентификации SSL-клиента, то есть когда сервер настроен требовать клиентские сертификаты и клиент предоставил действительный сертификат во время SSL handshake. Типичные значения этой переменной будут представлять собой шестнадцатеричную строку, соответствующую хешу сертификата клиента. Это полезно для ведения логов, контроля доступа и применения дополнительной пользовательской логики на основе идентичности клиента.

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

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

    location / {
        # Use the fingerprint in access logs
        access_log /var/log/nginx/access.log combined; # Redis or any other designated log format
        set $client_fp $ssl_client_fingerprint;
        if ($client_fp) {
            # More logic can be applied here based on the fingerprint
        }
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

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

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

Формат отпечатка может различаться в зависимости от используемого алгоритма хеширования; убедитесь, что обрабатываете оба формата (SHA-1, SHA-256), если это применимо.