我已经在 Apache 中设置了客户端证书验证,它运行良好。但是我想在特定页面上禁用客户端证书验证。
这是我迄今为止使用的配置:
# Verify client certificates
SSLCACertificateFile /etc/my-webserver/ssl/CA.pem
SSLVerifyClient require
SSLVerifyDepth 1
<Location "/public">
SSLVerifyClient none
</Location>
问题是,当我尝试访问时,/public
仍然会提示我输入证书。
这官方文档给出了如何做相反操作的示例(即仅在特定页面上启用证书验证)。
我找不到任何可以解答我的问题的东西。
答案1
由于这是搜索此确切问题时最热门的结果,并且看到没有答案令人沮丧,因此我将对一个 3 年前的帖子进行评论,以免其他人也遭受同样的挫败感。
这是我针对此问题的解决方案。您只需在将 SSLVerifyClient 设置为 require 时排除该位置,并用 if 语句将其括起来以排除您的端点。
<If "%{REQUEST_URI} == '/public'">
SSLVerifyClient none
</If>
<Else>
SSLVerifyClient require
</Else>
SSLVerifyDepth 5
以下是有关此问题的更多信息:https://httpd.apache.org/docs/2.4/expr.html 也许你需要 --strmatch 来使用通配符