$ssl_client_i_dn
$ssl_client_i_dn 变量保存客户端在 SSL/TLS 会话期间的身份可分辨名称 (DN)。 — NGINX Core (HTTP)
$ssl_client_i_dn
NGINX Core (HTTP)
说明
$ssl_client_i_dn 变量在使用客户端证书建立 SSL/TLS 连接时会被填充。具体来说,它包含客户端在 TLS 握手过程中由客户端证书提供的可分辨名称 (DN)。该变量主要在需要 SSL/TLS 客户端认证的上下文中可用,这种认证必须在 NGINX 配置中通过诸如 'ssl' 和 'ssl_verify_client' 之类的指令启用。通常,DN 会包含诸如客户端的通用名 (CN)、组织 (O) 和国家 (C) 等信息,按照 X.500 标准的格式。 当该变量被设置后,可在各种配置中使用,范围从根据客户端身份设置访问控制到根据客户端身份自定义响应。然而,如果在 SSL/TLS 连接中未使用客户端证书,该变量将不会包含任何数据。需要注意的是,该变量依赖于客户端认证是否成功;如果客户端未能提供有效证书或验证失败,$ssl_client_i_dn 将为空。对于需要基于客户端证书进行用户身份验证的应用程序而言,此变量的存在非常重要。
配置示例
server {
listen 443 ssl;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
ssl_verify_client on;
location / {
if ($ssl_client_i_dn) {
return 200 'Client DN: $ssl_client_i_dn';
}
return 403 'Access denied';
}
}子系统
http可缓存
是上下文
http, server, location, if⚠
确保启用了客户端证书验证,使用 'ssl_verify_client on';否则,该变量将为空。
⚠
在访问控制逻辑中使用此变量时要小心,避免因 SSL 配置错误而无意地拒绝合法请求。
⚠
仅当提供有效的客户端证书时,该变量才会包含数据;在认证失败时不会填充。