はじめましてmutsuと申します。
おやじ様のサイトを参考にApache2.0.40(RedHat9標準+数回のup2date?)を元にSSL通信化を行い、SSL通信は行えるようになったのですが、
通常のhttpリクエスト(80ポート)を使用するとBad requestページ(エラー400)が表示されるようになってしまいました。
現在全てのアクセスがhttps(ポート443)を使用したリクエストが必要な状況です。
以下個人的に怪しいと思っているが、対策がわからず困っている部分です。(IP、サーバ名等は架空のものです)
【起動時に以下のようなエラーが出力される】
[root@hoge /]# /etc/init.d/httpd restart
httpdを停止中: [ OK ]
httpdを起動中: [Wed Sep 29 16:40:35 2004] [error] VirtualHost 192.168.1.1:443 -- mixing * ports and non-* ports with a N
ameVirtualHost address is not supported, proceeding with undefined results
[ OK ]
【/etc/httpd/conf.d/ssl.confのバーチャルホスト設定】
#<VirtualHost _default_:443>
<VirtualHost 192.168.1.1:443>
# General setup for the virtual host
#DocumentRoot "/var/www/html"
#ServerName new.host.name:443
#ServerAdmin you@your.address
#ErrorLog logs/ssl_error_log
#TransferLog logs/ssl_access_log
DocumentRoot "/hoge/www"
ServerName hoge:443
ServerAdmin hoge@hoge.hoge.com
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
以上気になっている点です。
VirtualHostの設定はhttp.confと同様のものに443ポートを指定したのですが、起動時にエラーが吐かれます。
稚拙な説明にて申し訳ないのですが、どなた思い当たることなどをご教授頂けませんでしょうか?
また、確認が必要な部分等ありましたら、合わせて御教授頂けますと幸いです。
お手数ではございますが、識者の皆様、よろしくお願いいたします。
mutsuです。
相談しておいて申し訳ないのですが、解決致しました。
もっとしっかり調べてから書き込むべきでした。申し訳ない限りです。
御存知かと思いますが、念のため解決方法を記載したほうがよろしいでしょうか?
おやじ様、御手数ですが御返答を御願い致します。
> mutsuです。
>
> 相談しておいて申し訳ないのですが、解決致しました。
> もっとしっかり調べてから書き込むべきでした。申し訳ない限りです。
>
> 御存知かと思いますが、念のため解決方法を記載したほうがよろしいでしょうか?
>
> おやじ様、御手数ですが御返答を御願い致します。
勘違い等を起こしやすいことの参考になるかもしれませんから、ポイントだけでも挙げておかれたらどうでしょう。
Namazuも入ったので、後で役に立つかもしれませんから。
> 勘違い等を起こしやすいことの参考になるかもしれませんから、ポイントだけでも挙げておかれたらどうでしょう。
> Namazuも入ったので、後で役に立つかもしれませんから。
では、お言葉に甘えて、拙いながらも要点を整理させて頂きます。
【Apache + mod_sslにて、httpとhttpsを同時に使用する際の注意点】
<httpd.conf>
・NameVirtualHostを使用するポート分用意する。
つまり今回の場合、デフォルトのhttpプロトコル用の80と、SSL(https)用の443の2つのNameVirtualHostを指定する。
(もしかしたら443のNameVirtualHostはssl.confで指定したほうがいいのかも?)
NameVirtualHost x.x.x.x:80
NameVirtualHost x.x.x.x:443
・VirtualHostを指定する際、NameVirtualHostに記載されたIP、ポートを指定する。
SSLについての設定は全てssl.confに記載するのが望ましいため、httpd.confでは80ポートのVirtualHostのみ指定する。
<VirtualHost x.x.x.x:80>
・
ServerName hoge:80 ←サーバ名にもポートを指定する必要があるのか私はわかりませんが、指定しなくても動作しました。
・
・
</VirtualHost>
この時点でSSLを使用しない通信は行える。
<ssl.conf>
・SSL(https)を使用したいVirtualHostを指定する際、NameVirtualHostにて指定した443ポートを指定する。
<VirtualHost x.x.x.x:443>
・
ServerName hoge:443 ←SSLを使用するのであればポート指定するのが望ましいと思われます。
・
・
</VirtualHost>
上記の例の場合、http://hoge(またはhttp://hoge:80)の場合はhttpd.confに記載されたVirtualHostディレクティブの設定に、
https://hoge(またはhttps://hoge:443)の場合はssl.confに記載されたVirtualHostディレクティブの設定に従う。
以上、お目汚し申し訳ない。
「こんな設定は間違ってる!」という意見があれば、皆様是非叩いてやってください。