$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)。