- PR -

SSLRequireSSL追加エラー

投稿者投稿内容
どらねこ
常連さん
会議室デビュー日: 2004/01/05
投稿数: 25
投稿日時: 2006-08-27 17:17
WebDAVにSSLRequireSSLを追加しようとするとエラーメッセージが表示され、Apacheが起動&終了できないという問題に突き当たっています。
色々と調査したのですが解決できませんでした。同じような現象に突き当たった方がいらっしゃいましたら、解決策を教えていただけないでしょうか?

エラーメッセージは以下のとおりです。
Syntax error on line 1075 of /opt/www/conf/httpd.conf:
Invalid command 'SSLRequireSSL', perhaps mis-spelled or defined by a module not included in the server configuration

httpd.conf内のWebDAV設定部分は以下のとおりです。SSLRequireSSLを外すと正常に動作します。
<Directory /home/www/public>
DAV on
SSLRequireSSL
AllowOverride None
Options None
AuthType Basic
AuthName "Your Password Enter here."
AuthUserfile /opt/www/conf/.dav_passwd
require valid-user
</Directory>

WebDAV単体、SSL単体では動作しています(SSL設定はssl.confに記述してあります)。WebDAVのSSLRequireSSLを追加しようとしているディレクトリへもhttpsでアクセスすることができます。
「モジュールが足りていない」というエラーメッセージに見えますが、
Apacheへインストールされているモジュール一覧は以下のとおりです。
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_include.c
mod_log_config.c
mod_env.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_dav.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_dav_fs.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c

mod_sslもインストール済みです。
rpm -qa | grep mod_ssl
mod_ssl-2.0.54-10.4

宜しくお願いいたします。
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-28 09:42
> 「モジュールが足りていない」というエラーメッセージに見えますが、
そのようです。<mod_ssl.cがない

mod_sslはrpmでインストールされているようですが、
apacheはどのようにインストールされましたか?
rpmでmod_sslを入れて、apacheはソースからコンパイル…とかやってませんか?
どらねこ
常連さん
会議室デビュー日: 2004/01/05
投稿数: 25
投稿日時: 2006-08-28 12:31
SHRさん、返答ありがとうございました。

>rpmでmod_sslを入れて、apacheはソースからコンパイル…とかやってませんか?
う、、、そのとおりです。
apacheはソースからコンパイルして、SSLの設定もうまくいったので問題無いかと思っていたのですが、今回のSSLRequireSSLの設定でつまずき、ネットで調べたところ、「mod_sslをインストールする必要がある」といった記述がありましたので、そのとおり入れてみました。
mod_sslもソースからコンパイルする必要がある、、、ということでしょうか?
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-28 14:18
rpmのmod_sslは、rpmのapacheを前提にパッケージが構築されておりますので、
rpmのapacheを使うならrpmのmod_sslが使用できるかと思います。

逆にソースから入れたapacheを使うなら、mod_sslもソースから入れた方が良いかと思います。
※その際、mod_sslのrpmパッケージは削除した方が良いと思います。
 VerUpされて変に影響が出る可能性もあるでしょうし。

ところでmod_sslがrpmで入ったという事は、httpdも入ってません?
httpdがインストールされていないと依存関係でmod_sslも入らないような気がするのですが…。


以下追記:
ApacheのVerは?
1.3.x、2.0.x、2.2.xでいろいろとモジュール周りが変わってます。
mod_sslの場合、2.0.x以降は別途ソースを用意する必要は無く、
configureする時にオプション付ければ済むだけです。
1.3.xであれば別途ソースを用意する必要がありますが…。

[ メッセージ編集済み 編集者: SHR 編集日時 2006-08-28 14:28 ]
どらねこ
常連さん
会議室デビュー日: 2004/01/05
投稿数: 25
投稿日時: 2006-08-28 22:32
SHRさん、返答ありがとうございました。

>ところでmod_sslがrpmで入ったという事は、httpdも入ってません?
httpdというのはApacheのことでしょうか?確かにhttpd-2.0.55.tar.gzをコンパイルしたのですが、、、

>ApacheのVerは?
Apacheのバージョンは2.0.55です。

>configureする時にオプション付ければ済むだけです。
configureは以下のように指定しました。
./configure --enable-rewrite=shared --enable-ssl=shared --enable-shared=yes --enable-dav=yes --prefix=/opt/www --with-mpm=worker

これでSSLも動いたので、てっきりmod_sslは入っていると思っていたのですが、例のエラーメッセージが出たので、別途rpmのmod_sslをインストールした次第です。
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-29 08:32
>>ところでmod_sslがrpmで入ったという事は、httpdも入ってません?
>httpdというのはApacheのことでしょうか?確かにhttpd-2.0.55.tar.gzをコンパイルしたのですが、、、
それとは別にrpmのパッケージとして入っていませんか?という質問です。
rpm -q httpd をしてみて下さい。

configureオプションを見て解りました。
sslはDSOモジュールとしてインストールしているのですね。
※なのでhttpd -lの結果にmod_ssl.cがない
DSOモジュールであれば、動的に呼び出さないとそのモジュールは使えません。
何かDSOモジュールである必要があるのでしょうか?
必要があるのであれば、mod_sslを呼び出した中で設定すれば問題ないかと思います。
※Ifmodule内か、その中で呼び出しているであろうssl.confか
特にないのであれば、"--enable-ssl=shared"を"--enable-ssl"にして
configureからやり直してみて下さい。
どらねこ
常連さん
会議室デビュー日: 2004/01/05
投稿数: 25
投稿日時: 2006-08-29 23:18
SHRさん、返答ありがとうございました。

>rpm -q httpd をしてみて下さい。
httpd-2.0.54-10.4と返ってきました。入っているみたいです。消したほうがよいのでしょうか?

>何かDSOモジュールである必要があるのでしょうか?
参考にした書籍に「Apache本体のプロセスを小さく、速くできる」とありました。
素人ですみません。。。

>※Ifmodule内か、その中で呼び出しているであろうssl.confか
>特にないのであれば、"--enable-ssl=shared"を"--enable-ssl"にして
>configureからやり直してみて下さい。
ご指摘いただいたとおり、ssl.conf内にWebDAVのDirectory記述とSSLRequireSSLを設定したところ、エラーも無く動きました!ちゃんとhttpsの時だけ表示されるようになりました!本当にありがとうございました。

動作はうまくいったのですが、少し疑問が残ります。ssl.conf内では特にmod_sslを呼び出しているような記述は見つからなかったのですが、ssl.confに記述するということは自動的にmod_sslを呼び出していることになるのでしょうか?

また、これは別スレッドにしたほうがよいのかもしれませんが、Tomcatのwebアプリ上のディレクトリにはSSLRequireSSLは設定できないのでしょうか?以下のようにして設定したのですが、全く効きませんでした。
<Directory /usr/local/tomcat/webapps/testapp/ssl>
SSLRequireSSL
</Directory>
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-08-30 10:55
>ssl.conf内では特にmod_sslを呼び出しているような記述は見つからなかったのですが、
>ssl.confに記述するということは自動的にmod_sslを呼び出していることになるのでしょうか?
いえ、動的モジュールはLoadModuleで呼び出す必要があります。
httpd.conf内にLoadModuleでmod_ssl.cを呼び出している箇所があるはずです。

それと別に<IfModule mod_ssl.c>がどこかにあると思います。
呼び出されたmod_ssl.cが有効(?)になっているのはこの定義の中だけです。
この中でssl.confをIncludeしているはずなので、
ssl.conf内に記載された内容は、mod_ssl.cが有効となっているわけです。
※何か日本語が変ですが、ニュアンスで伝わる事を祈ります

すみません、後半のご質問に関しては私は解りません。

スキルアップ/キャリアアップ(JOB@IT)