apache 予備知識
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
● SSL は1 つのIP に1 つだけ設定可能
NameVirtual 111.222.333.444
NameVirtual 555.666.777.888
DocumentRoot "/xxxx/xxxx/xxxx" DocumentRoot "/xxxx/xxxx/xxxx"
ServerName test1.co.jp ServerName test1.co.jp
DocumentRoot "/xxxx/xxxx/xxxx" DocumentRoot "/xxxx/xxxx/xxxx"
ServerName test1.co.jp ServerName test1.co.jp
参考図:httpd.conf の設定例
基本的にapache でSSL を利用するにはIP ベースバーチャルホストにてapache を設定する必要があります。
参考図では、1 台のサーバーにネームベースバーチャルホスト とIP ベースバーチャルホスト を混在して設定してあります。SSL は1 つのIP で1 つだけ設定可能ですので、IP:111.222.333.444 に対して1 つのSSL が対応しています。IP:111.222.333.444 はネームベースバーチャルホスト 対応していますが、IP ベースバーチャルホスト にも対応できます。また、IP:555.666.777.888 にはIP:111.222.333.444 とは別領域のSSL が設定してあります。
このように、1 つのIP につきバーチャルホストを複数設定できるのです。そして、1 つのapache で複数のSSL を構築できるのです。
● バーチャルホスト構成におけるIP アドレスアクセス時のサイト表示規則
通常、URL にはFQDN を入力し、サイトにアクセスします。しかし、URL にIP アドレスを入力したらどのサイトが表示されるのでしょうか?答えは、ネームベースかIP ベース、実装方法によって違ってきます。
> ネームベースバーチャルホストの場合
httpd.conf の最上部に記載している のサイトが表示されます。
> IP ベースバーチャルホストの場合
IP アドレスに対応する のサイトが表示されます。
● バーチャル環境でのUserDir 利用について
apache のUserDir をバーチャル環境で利用する場合には注意が必要です。
▼ apache httpd.conf の設定内容 ----------------------------
UserDir public_html
ServerName test01.spicy-islands.com
DocumentRoot /home/webmaster-test01/webroot/htdocs
User test01
Group ppp
ServerName test02.spicy-islands.com
DocumentRoot /home/webmaster-test02/webroot/htdocs
User test02
Group ppp
▼ password ファイルの設定内容 -----------------------------
test01:x:101:100::/home/webmaster-test01/webroot/htdocs:/bin/bash
test02:x:102:100::/home/webmaster-test02/webroot/htdocs:/bin/bash
------------------------------------------------------------
上記の設定によると、test01 ユーザーにtest01.spicy-islands.com ドメインがtest02 ユーザーにtest02.spicy-islands.com ドメインが関連づいています。この状態では、UserDir が設定されているので、次のような現象が起こり非常に問題です。
/home/webmaster-test02/webroot/htdocs/public_html ディレクトリが存在する場合
http://test01.spicy-islands.com/~test02 でtest02 ユーザーの領域が閲覧できてしまう
/home/webmaster-test01/webroot/htdocs/public_html ディレクトリが存在する場合
http://test02.spicy-islands.com/~test01 でtest01 ユーザーの領域が閲覧できてしまう
UserDir をUserDir public_html とした場合、基本的にhttp://[DomainName]/~[UserID] にアクセスしたとき、[DomainName] にかかわらず[UserID] のホームディレクトリを表示するのです。
これを回避するには下記の対応を行う必要があります。
・UserDir desabled とする
・VirtualHost ごとにUserDir を設定する
さらに、バーチャルドメインごとに利用できる UserID を設定するには、次の設定をVirtualHost タグの中に書きます。
UserDir disabled
UserDir enabled UserID01 UserID02 ...