Apache におけるクライアント認証の話。
/etc/httpd/conf.d/ssl.conf 内に下記記述を追加することで(多分ディフォルトでコメントになっているはずなので、コメントマークを外してやる)、クライアント認証が可能になる。
SSLVerifyClient requireSSLVerifyDepth 10
・・・が、これだと、サイト全体にクライアント認証がかかってしまう。
証明書を持っていないユーザがアクセスすると、(Google Chrome の場合)「このサイトは安全に接続できません www.exsample.jp から無効な応答が送信されました。 ERR_SSL_PROTOCOL ERROR」というエラー画面が出て、どのコンテンツにもアクセスできない。
ある特定のディレクトリだけを会員サイトのような扱いで「クライアント証明が必要」とするには、この設定を再度コメントに戻す。
#SSLVerifyClient require#SSLVerifyDepth 10
これで、誰でも(自己認証局の場合「この接続ではプライバシーが保護されません」という脅し文句が表示されるけど(^^; ) https サイトを見ることができるようになる。
そして、ディレクトリー単位で制限をかけたい場合は、<Directory> ディレクティブに設定を行う。
たとえば、https://www.exsample.jp/crt_test1/ のみクライアント認証を行いたい場合は、ssl.conf 内に
<Directory "/var/www/html/crt_test1">SSLRequireSSLSSLVerifyClient requireSSLVerifyDepth 10</Directory>
のようなディレクティブを追加する。
これで、
https://www.exsample.jp/crt_test1/
にはアクセスできるが、
https://www.exsample.jp/crt_test1/
では、上に書いたように「無効な応答が送信されました」のエラーとなる。
コメントする