クライアント認証を有効にして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に設定することはできませんでした。
これで、ターゲット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>