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

それを使用してサービスにアクセスします。ただし、80 ポートを閉じることができるように https に設定できませんでした。

答え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>

関連情報