我需要仅对来自我们内部网外部的请求启用客户端证书验证,而无需对来自 192.168.0.0/24 等的请求进行验证。我尝试使用geo
模块来定义内部子网的变量。在http
上下文中:
geo $intranet {
default 0;
192.168.0.0/24 1;
}
在server
上下文中
if ($intranet != 1) {
ssl_verify_client on;
}
但无法在语句ssl_verify_client
中使用指令if
。我收到错误:
这里不允许使用“ssl_verify_client”指令
还有其他方法可以做到这一点吗?
答案1
最后我找到了符合预期的解决方案。
在http
上下文中:
geo $intranet {
default 0;
192.168.0.0/23 1;
}
在server
上下文中:
ssl_verify_client optional;
set $verify $intranet$ssl_client_verify;
if ($verify ~ (0NONE|0FAILED)) {
return 403;
}