【发布时间】: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 {
[..]
}
}
【问题讨论】: