$ssl_client_escaped_cert
$ssl_client_escaped_cert 变量包含在 SSL 握手期间由客户端发送的 PEM-encoded 和 URL-escaped 的客户端证书。 — NGINX Core (HTTP)
$ssl_client_escaped_cert
NGINX Core (HTTP)
说明
$ssl_client_escaped_cert 变量专门用于 HTTP 服务器上下文,当 HTTPS 连接使用客户端证书认证时使用。当客户端建立安全连接并提供证书时,该变量以既 URL-encoded 又经过安全转义的格式捕获该证书的全部详细信息,以便传输。这在记录日志或作为查询参数传递时特别有用,能够避免在 URL 中引入语法错误。 该变量仅在启用客户端证书验证并在 SSL 握手期间提供有效客户端证书时设置。它保存客户端证书的编码内容,允许服务器端应用利用客户端的身份进行授权或访问控制。该变量的典型值包括实际的 PEM-encoded 证书数据,该数据由 Base64-encoded 的证书组件组成,并被特定的 PEM 头部和尾部行包裹。如果未提供客户端证书,则该变量为空。 与其他 SSL 相关变量(例如 $ssl_client_cert 和 $ssl_client_verify)结合使用时,$ssl_client_escaped_cert 提供了在安全环境中管理客户端验证的完整机制,适用于不仅需要身份验证还需要安全传输证书数据以便进一步处理的场景。
配置示例
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/client_ca.crt;
ssl_verify_client on;
location /secure-data {
add_header X-Client-Cert "$ssl_client_escaped_cert";
}
}子系统
http可缓存
是上下文
http, server, location⚠
确保启用 SSL 客户端身份验证,以便该 variable 被填充;否则它将保持为空。
⚠
在您的 application context 中未对该 variable 正确转义,可能导致生成格式错误的 URLs。
⚠
必须配置 NGINX 以安全地记录该 variable,防止在 access logs 中泄露敏感的证书信息。