我尝试使用 nginx 作为反向代理来验证客户端证书,并且想检查客户端证书中的 OU。总是返回 404

我尝试使用 nginx 作为反向代理来验证客户端证书,并且想检查客户端证书中的 OU。总是返回 404

这是我的配置。

server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        server_name _;

        ssl_certificate /etc/ssl/certs/nginx-self.crt;
        ssl_certificate_key /etc/ssl/private/nginx-self.key;
        ssl_client_certificate /etc/nginx/client_cert/ttca.pem;
        ssl_verify_client on;
        ssl_verify_depth 1;
        
        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;

               if ( $ssl_client_s_dn ~ "MyOU" ) {
                        proxy_pass https://192.168.210.108;
                }
               return 404;
        }
}

答案1

你可能需要一个break;在你的if街区里。

就目前情况而言,隐式位置从外部块if继承,并且由于胜过,您仍然只会得到 404。return 404;returnproxy_pass

if在位置块中是非常特殊的,我强烈建议你避免使用它,除非你非常仔细地阅读各种文档和示例,包括Gerald链接的那个,我猜你只读了它的标题。

相关内容