- - PR -
SSLRequireSSL追加エラー
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 宜しくお願いいたします。 |
|
投稿日時: 2006-08-28 09:42
> 「モジュールが足りていない」というエラーメッセージに見えますが、
そのようです。<mod_ssl.cがない mod_sslはrpmでインストールされているようですが、 apacheはどのようにインストールされましたか? rpmでmod_sslを入れて、apacheはソースからコンパイル…とかやってませんか? |
|
投稿日時: 2006-08-28 12:31
SHRさん、返答ありがとうございました。
>rpmでmod_sslを入れて、apacheはソースからコンパイル…とかやってませんか? う、、、そのとおりです。 apacheはソースからコンパイルして、SSLの設定もうまくいったので問題無いかと思っていたのですが、今回のSSLRequireSSLの設定でつまずき、ネットで調べたところ、「mod_sslをインストールする必要がある」といった記述がありましたので、そのとおり入れてみました。 mod_sslもソースからコンパイルする必要がある、、、ということでしょうか? |
|
投稿日時: 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 ] |
|
投稿日時: 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をインストールした次第です。 |
|
投稿日時: 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からやり直してみて下さい。 |
|
投稿日時: 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> |
|
投稿日時: 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が有効となっているわけです。 ※何か日本語が変ですが、ニュアンスで伝わる事を祈ります すみません、後半のご質問に関しては私は解りません。 |