$ssl_client_fingerprint

变量 $ssl_client_fingerprint 表示客户端 SSL 证书的指纹。 — NGINX Core (HTTP)

$ssl_client_fingerprint NGINX Core (HTTP)

说明

当启用 SSL 客户端认证时,$ssl_client_fingerprint 变量在 NGINX 中使用。它为客户端的 SSL 证书提供一个唯一的指纹,该指纹基于加密哈希,通常使用 SHA-1 或 SHA-256 哈希算法生成。该指纹源自证书的数据,特别是其 `tbsCertificate` 结构。仅当成功执行 SSL 客户端认证时才会设置该变量,这意味着服务器已配置为要求客户端证书,且客户端在 SSL 握手期间已出示有效证书。该变量的典型值类似表示客户端证书哈希的十六进制字符串格式。这对于日志记录、访问控制以及基于客户端身份应用额外自定义逻辑非常有用。

配置示例

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 handshake 的适当验证,不要依赖此变量来进行身份验证。

指纹格式可能因所使用的哈希算法而异;如适用,请确保处理两种格式(SHA-1、SHA-256)。