
クライアント証明書を有効にして 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>