$ssl_client_cert

当启用 SSL 客户端验证时,变量 $ssl_client_cert 包含客户端的 SSL 证书,形式为 PEM 编码的字符串。 — NGINX Core (HTTP)

$ssl_client_cert NGINX Core (HTTP)

说明

在 NGINX 中,当发生 SSL 客户端证书验证时会使用 $ssl_client_cert 变量。该变量存储在 SSL 握手过程中提供的客户端证书,格式为 PEM 编码的字符串。当 'ssl_verify_client' 指令被配置为 'on' 且证书验证成功时,该变量被设置为客户端证书的值。 在需要进行客户端身份验证的安全通信场景(例如 API 服务或用户认证系统)中,这个变量特别有用。如果未提供客户端证书或验证失败,该变量将为空。该变量的内容可以记录到日志、在条件语句中进行评估,或在必要时传递给后端应用程序。 典型用途包括基于客户端证书属性(例如通用名 (CN) 或主题备用名 (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 时要小心,因为它包含敏感信息。