【问题标题】:Different SSL ssl_verify_clent for different SSL ports in NGINX not workingNGINX 中不同 SSL 端口的不同 SSL ssl_verify_clent 不起作用
【发布时间】:2016-06-27 19:18:58
【问题描述】:

我在 Nginx 中有一个定义,通过不同的端口,我需要不同的 SSL 客户端验证选项。

当我连接到 :443/location1 时,Nginx 将请求客户端证书,但会失败并显示“HTTP 400,错误请求,需要客户端证书”。似乎 NGinx 使用端口 444 的服务器规则,该规则在连接时具有“ssl_verify_client off”,但在路由上,NGinx 检查是否提供了客户端证书,因为它是端口 443 的规则,说需要客户端验证并且然后在实际的 HTTP 请求中失败。

我四处寻找,似乎找不到任何与此相关的文档。显然相同的 IP:PORT 是一个问题,但到目前为止,PORT 表明我可以更改配置,但似乎并非如此。

server {
    listen 443;
    ssl on;
    ssl_certificate     /etc/nginx/ssl-certs/a.cert;
    ssl_certificate_key /etc/nginx/ssl-certs/a.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_client_certificate /etc/nginx/ssl-certs/ca.pem;
    ssl_verify_client   on;
    location /location1 {
        [..]
    }
}
server {
    listen 444;
    ssl on;
    ssl_certificate     /etc/nginx/ssl-certs/a.cert;
    ssl_certificate_key /etc/nginx/ssl-certs/a.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_verify_client   off;
    location /location2 {
        [..]
    }
}

【问题讨论】:

    标签: ssl nginx


    【解决方案1】:

    我终于明白了。

    客户端拒绝是强制性的,但可以在建立连接后或握手期间发生。

    • NGINX 将允许握手完成,如果 客户已通过验证。
    • APACHE(至少是我使用的最后一个版本)失败 握手。

    【讨论】:

      猜你喜欢
      • 2014-08-03
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      相关资源
      最近更新 更多