ssl_verify_client

`ssl_verify_client` 指令配置 NGINX 是否应请求并验证客户端的 SSL 证书。 — NGINX HTTP Core

ssl_verify_client
httpserver
语法ssl_verify_client on | off | optional;
默认值off
上下文http, server
模块NGINX HTTP Core
参数1

说明

`ssl_verify_client` 指令在 NGINX 配置中用于指定在 SSL 握手期间对客户端 SSL 证书的验证。启用时,该指令会导致 NGINX 向客户端请求证书,并根据 `on`、`off` 或 `optional` 的设置,或者强制确认有效证书,或者在客户端未提供证书时允许其继续访问。该功能在需要增强安全性的场景中特别有用,例如部署了基于证书认证客户端的 mTLS。 该指令接受单个参数: - `on`:要求客户端提供有效证书;如果客户端无法提供,则认证失败。 - `off`:不请求客户端证书,并在认证过程中忽略客户端证书。 - `optional`:请求客户端证书,但即使客户端不提供也允许访问;如果提供了客户端证书,则会对其进行验证。 这种控制级别允许管理员为 NGINX 服务器环境中的不同端点微调安全策略。将此指令的使用与正确配置的 CA 和证书文件配合使用非常关键,以避免安全漏洞并确保 mTLS 的正常运行。

配置示例

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    ssl_verify_client on;
    ssl_client_certificate /etc/nginx/ssl/ca.crt;
}

确保用于客户端验证的 CA 证书已通过 `ssl_client_certificate` 正确设置。

如果不谨慎管理,使用 `optional` 而没有适当的客户端证书可能会导致未授权访问。

确保 SSL 设置被正确定义以支持客户端证书认证。不合适的设置可能会阻止验证成功。