NGINX - 即使 USB 令牌被移除后,客户端身份验证仍继续工作

NGINX - 即使 USB 令牌被移除后,客户端身份验证仍继续工作

我有一个在 apache2 上运行的网站,客户端通过存储在 USB 驱动器上的 SSL 证书进行身份验证。在客户端和 Web 服务器之间有一个 NGINX 反向代理。

身份验证的工作原理如下:

1)在反向代理上,我设置了两个包含客户端证书序列号和 DN 的自定义标头:

proxy_set_header x-secondary-serial $ssl_client_serial;
proxy_set_header x-secondary-dn $ssl_client_s_dn;

2) 在 Web 服务器上,一些 PHP 代码会检查序列号是否在允许的证书列表中。我已与开发人员核实过序列号在每个页面上是否都经过了验证。

现在,我的问题是,当我拔下 USB 驱动器并继续浏览时,我仍然通过了身份验证。它似乎只有在完全不活动 10 分钟后才会超时(如果我在这 10 分钟之前发起请求,我必须再等 10 分钟才能发生超时,然后页面会要求我插入密钥)。

我检查了日志,发现在移除 USB 驱动器后,每个请求的标题(x-辅助-串行x-辅助 DN) 仍然填充了正确的值。因此,我考虑了缓存,并尝试将其添加到我的 nginx 服务器块中(但没有成功):

ssl_session_cache off;

我也尝试缩短超时时间(没有成功,而且无论如何,我不太喜欢这个解决方案):

ssl_session_timeout 1m;

我想对每个请求强制进行客户端证书的系统验证(最好在反向代理上,因为这是我最能控制的服务器)。

以下是完整的服务器块:

    server {
        listen 443;
        server_name example.org;

        ssl_certificate           /etc/ssl/certs/example.org.pem;
        ssl_certificate_key       /etc/ssl/private/example.org.key;

        ssl on;
        ssl_session_cache off;
        #ssl_session_timeout 1m;

        # SSL client authentication
        ssl_client_certificate /etc/nginx/ssl/CertEurope_fullchain.crt;
        ssl_verify_depth 2;
        ssl_verify_client optional;

        client_max_body_size 2048m;
        proxy_max_temp_file_size 0;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header SSL_PROTOCOL $ssl_protocol;

                proxy_set_header x-secondary-serial $ssl_client_serial;
                proxy_set_header x-secondary-dn $ssl_client_s_dn;

                proxy_read_timeout           90;

                access_log      /var/log/nginx/access.log;
                error_log       /var/log/nginx/error.log;

                proxy_pass         https://10.13.1.1/;
        }
}

有人知道如何解决这个问题吗?

问候

相关内容