我在Nginx中有一个定义,通过不同的端口,我需要不同的SSL客户端验证选项。
当我连接到:443/location1时,Nginx将请求一个客户端证书,但是如果使用"HTTP 400,坏请求,需要客户端证书“,则会失败。NGinx似乎对端口444使用了服务器规则,端口444在连接上有一个"ssl_verify_client off“,但是在路由上,NGinx检查是否给出了客户端证书,因为它是针对端口443的规则,表示客户端验证是必需的,然后在实际的HTTP请求中失败。
我到处找,似乎找不到任何文档。显然,相同的IP:端口是一个问题,但到目前为止,端口表明我可以更改配置,但情况似乎并非如此。
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 {
[..]
}
}
发布于 2016-10-21 16:04:33
我终于想出来了。
客户端拒绝是强制性的,但可以在连接完成后发生,也可以在握手期间发生。
https://stackoverflow.com/questions/38061602
复制相似问题