$ssl_client_raw_cert

变量 $ssl_client_raw_cert 包含客户端 SSL 证书的原始字节。 — NGINX Core (HTTP)

$ssl_client_raw_cert NGINX Core (HTTP)

说明

当 NGINX 配置为处理 SSL/TLS 连接且客户端出示证书用于认证时,会为变量 $ssl_client_raw_cert 赋值。该变量在处理通过 SSL 连接的请求的上下文中可用,当 'ssl_verify_client' 指令设置为 'on' 或 'optional' 时即可使用。原始客户端证书作为单个 base64-encoded 字符串输出,可用于记录、访问控制或任何需要了解客户端证书的应用特定处理。 该变量在实施双向 TLS (mTLS) 的安全环境中特别有用,因为它允许服务器管理员和应用开发者根据客户端证书施加规则,例如为了审计记录敏感信息,或根据证书的有效性或属性动态更改请求处理。此变量的典型值将以 base64-encoded 形式表示客户端在 SSL 握手期间传输的 X.509 证书,因此在需要跨受信任实体进行身份验证的场景中至关重要。 要在实践中使用此变量,NGINX 可以直接记录证书内容或根据证书属性(例如 subject 或 issuer)有条件地路由请求。诸如 'ssl_verify_client' 的设置需要谨慎配置,因为它们会直接影响应用安全性。

配置示例

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

    location / {
        add_header X-Client-Cert $ssl_client_raw_cert;
        # Additional processing...
    }
}

子系统

http

可缓存

上下文

http, server, location, if

确保 'ssl_verify_client' 指令设置正确;否则该变量将为空。

此变量仅在启用 SSL 的服务器上下文中可用;在 HTTP 上下文中不存在。

记录原始客户端证书可能会暴露敏感信息;请确保遵守安全策略。