Apache2.4で、特定のIPアドレスからアクセスした場合にクライアント認証を不要にする

クライアント認証を設定したサーバーに、特定のIPアドレスからは認証なしでアクセスしたい場合、以下のようにディレクティブを書くと簡単に設定できる。

SSLCACertificateFile /etc/pki/CA/cacert.pem
    SSLCARevocationFile /etc/pki/CA/crl.pem
    SSLVerifyDepth 10
<If "%{REMOTE_ADDR} !='192.168.0.1'">
    SSLVerifyClient require
</If>

これで、リモートアドレスが 192.168.0.1 以外の場合は、SSLVerifyClient require が発動する。

SSLVerifyClient を optional にして、require ディレクティブで条件分岐させる手もあるけれど、たぶん上記のやり方のほうが直感的にわかりやすいと思う。

SSLVerifyDepth ディレクティブは、If の内側であろうと外側であろうとちゃんと動くので、外に出しておけば良いでしょう。

なお、証明書や失効ファイル、IPアドレスは、実態に合わせて変更してください。

コメント