アクセス制御に関する質問です。
クライアント用証明書を作成する際に指定した organizational UnitName が
部署Aの人であれば
A用のディレクトリにアクセス可能、他の人からはアクセス不可
部署Bの人であれば
B用のディレクトリにアクセス可能、他の人からはアクセス不可
このように証明書の属性を参照したアクセス制御を試したいのですが
Windows版Apadheでの設定方法をご教示ください。
Linux版では <Location /> SSLRequire </Location> の部分を設定すれば
良いらしいとのことですがWindows版に同じ部分が無く困っています。
OpenSSL は Win32OpenSSL-0_9_8d
Apache は Apache_2.0.59-Openssl_0.9.8d-Win32 を使用しています。
> Linux版では <Location /> SSLRequire </Location> の部分を設定すれば
> 良いらしいとのことですがWindows版に同じ部分が無く困っています。
>
> OpenSSL は Win32OpenSSL-0_9_8d
> Apache は Apache_2.0.59-Openssl_0.9.8d-Win32 を使用しています。
ないわけはないのですが・・・。
Apache_2.0.59-Openssl_0.9.8d-Win32\conf\ssl.confを見ましたか?
ご返信ありがとうございます。
> Apache_2.0.59-Openssl_0.9.8d-Win32\conf\ssl.confを見ましたか?
どうやらhttpd.confの方を見ていたようです。
ssl.confの中に
#<Location />
#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \
# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>
という項目がありました。
この部分を書き換えてみましたが上手くいかず、用意していたページにアクセスしても
Forbidden
You don't have permission to access / on this server
と出てしまいました。部署A用と部署B用に用意したページだけでなく
すべてのページが見れなくなっています。
修正すべき部分等、ご教示お願いします。
・ディレクトリ階層
<web>
├<public>
├<public_html>
├index.html
├<typeA>部署A用ディレクトリ
├<public_html>
├index.html
├<typeB>部署B用ディレクトリ
├<public_html>
├index.html
A用OU=typeA
B用OU=typeB
・ssl.confに書き加えた内容
<Location />
SSLRequire \ %{SSL_CLIENT_S_DN_OU} in {"typeA", "typeB"}
</Location>
<Location /typeA>
SSLRequire \ %{SSL_CLIENT_S_DN_OU} in {"typeA"}
</Location>
<Location /typeB>
SSLRequire \ %{SSL_CLIENT_S_DN_OU} in {"typeB"}
</Location>