在特定页面上禁用 Apache 客户端证书验证

在特定页面上禁用 Apache 客户端证书验证

我已经在 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 来使用通配符

相关内容