如何从 Apache 2 中的客户端认证中排除某些路径/页面

如何从 Apache 2 中的客户端认证中排除某些路径/页面

我正在尝试设置启用客户端认证的 Apache 服务器。这样客户就可以使用有效的客户端证书访问内容。

假设我的服务器正在运行

https://myserver/myservice/

此外,我还需要向客户提供一个接口,通过向其提供一些身份验证信息来获取他们的客户端证书

https://myserver/myservice/register

一旦上传信息验证通过,它将返回客户端证书。

如果我理解正确的话,这个路径应该被排除在客户端认证机制之外,因为它用于生成证书。所以问题是,我该如何指定 httpd 配置来实现这一点?

我当前的配置如下:

ProxyPass /myservice/register http://localhost:4444/register

<Virtualhost *:443>
    ServerName myserver
    DocumentRoot /path/to/my/server/root
    ProxyPass /myservice/ ajp://localhost:8009/myservice/
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCertificateFile /path/to/server.cert
    SSLCertificateKeyFile /path/to/server.key
    ...
    SSLVerifyClient require
    SSLVerifyDepth 10
    SSLCACertificateFile /path/to/ca.buddle.pem
</Virtualhost>

通过此配置,我可以从

http://myserver/myservice/register

然后使用它访问服务。但是,我没有设法将其设置为https,以便我可以关闭80端口。

答案1

现在我得到了解决方案,只需使用或排除目标 URL 路径。

<Virtualhost *:443>
    ServerName myserver
    DocumentRoot /path/to/my/server/root
    ProxyPass /myservice/register http://localhost:4444/register
    ProxyPass /myservice/ ajp://localhost:8009/myservice/
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCertificateFile /path/to/server.cert
    SSLCertificateKeyFile /path/to/server.key
    ...
    SSLVerifyClient require
    SSLVerifyDepth 10
    SSLCACertificateFile /path/to/ca.buddle.pem

    <LocationMatch ^/myservice/register$>
        SSLVerifyClient none
    </LocationMatch>

</Virtualhost>

相关内容