SuSE 9.3でSSLサイトを構築しようと頑張っていますが壁にぶち当たってしまいましたので、どなたかご助言いただければと思います。
SuSE ではデフォルトのDocumentRootが /srv/www/htdocs ですが
バーチャルホスト設定を行って/home/user1/wwwのように変更を行っています。例えばdomain1 > user1 : domain2 > user2 のような感じです。
httpsでのアクセスは名前ベースのバーチャルドメインは出来ませんので上記のうち https://domain1 のみを /home/user1/wwwに設定しています。
http://domain1/
https://domain1/
上記2つはhttpではOKなのですが、httpsでアクセスすると、
Access forbidden!
要求されたディレクトリへのアクセス権限がありません。 インデックスドキュメントが存在しないか、 ディレクトリの読み込みが許可されていません。
サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。
Error 403
と蹴られてしまいます。https でのDocumentRootを /srv/www/htdocs に設定すると問題なく表示されます。
エラーログは
[Wed Nov 09 01:42:16 2005] [error] [client xxx.xxx.xxx.xxx] client denied by server configuration: /home/user1/www/
という感じでapache2の設定のどこかを変えれば直るだろうということは判るのですが、何処を触っていいのか見当もつきません。
suexec、mod_userdirは無効にしてあります。
何処が怪しいと思われますか?
/home
/home/user1
/home/user1/www/
/home/user1/www/index.html
のどこかのモードが アパッチから読めないのではないですか。
stat でそれぞれ順に Mode を確認してみてください。
祇園さま
ご助言ありがとうございます。
chkstat.plを以下の内容で作成し,
directry or filenameを変更しながら実行してみました。
-----------------------------------------------------
#!/usr/bin/perl
use File::stat;
$obj_stats = stat("directry or filename");
print 'filemode(Type and Permission)=' . $obj_stats->mode. "\n";
-----------------------------------------------------
結果は
/home/user1/www/indexhtml 33188(0100644)
他は
/home/user1/www
/home/user1
/home
この3つ全て16877(0040755)となるためパーミッションには問題ないのでは?と考えています。実際httpではアクセスできますので。
ls -lで確認しても結果は同じです。
apacheではsslと非ssl時にディレクトリアクセス時に権限が違うんでしょうか?
結局、client denied by server configuration というエラーメッセージが「アクセス制御」で拒絶、という情報を検索しましたので、/etc/apache2/vhosts.d/vhost-ssl.confに以下のディレクティブを追加したところ、無事動作するようになりました。
<Directory "/home/user1/www">
Order allow,deny
Allow from all
</Directory>
なんか基本中の基本を忘れてました。お騒がせして申し訳ありません>皆様