早速自分のサーバのバーチャルホストのなかに
設定しました。が、https:〜でアクセスすると404エラーがでてしまいます。httpd.confの設定が悪いのでしょうか?
<VirtualHost 123.45.67.89>
DocumentRoot /var/www/hogehoge/htdocs/
ServerName hogehoge.jp
SSLCertificateFile /etc/httpd/conf/ssl.crt/hogehoge.jp.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/hogehoge.jp.key
</VirtualHost>
http://www.atmarkit.co.jp/flinux/rensai/apache08/apache08b.html
バーチャルホストによる複数サイトの同時運用(2/2)
バーチャルホストにはIPベースとNAMEベースがありますね。
もし、サーバがひとつのIPしかもっていないNAMEベースのバーチャルホストなら、SSLは使用できません。
それはよろしいでしょうか。
http://www.yggdrasil.jp/ygg16.html
WWW.YGGDRASIL.JP
WEBサーバはApache1.xxでmod_sslを使うといらっしゃるということでよろしいのですか?
まず、httpsはポート443を利用しますので…、
<VirtualHost 123.45.67.89> → <VirtualHost 123.45.67.89:443>
…です。指定無しではポート80になってしまいますので、当然ながらNot Foundになります。
それから、mod_sslが有効になっていますか?
SSLのVirtualHost設定にはhttpd.confで、少なくとも以下の様になっている必要があります。
<IfDefine HAVE_SSL>
LoadModule ssl_module modules/libssl.so # ←この行がコメントアウトされていたら、それを外す
</IfDefine>
:
:
<IfDefine HAVE_SSL>
Listen 443 # ←443をListenしていないと絶対に不可能です。
SSLSessionCache shm:/var/cache/ssl_gcache_data(524288)
<VirtualHost 123.45.67.89:443>
DocumentRoot /var/www/hogehoge/htdocs/
:
:
</VirtualHost>
</IfDefine>
もちろん、設定後はApacheを再起動して下さい。
URLにご紹介したサイトはかなりわかりやすく解説されていらっしゃいますので、そちらも(←いや、むしろそちらを)参考にしてみてはいかがでしょうか…(^_^;)
paloさんが「サーバがひとつのIPしかもっていないNAMEベースのバーチャルホストなら、SSLは使用できません。」とおっしゃっていますが、httpsを使うVirtualHost同士でIPアドレスとポートが重ならなければ大丈夫です。以前、Apacheのメーリングリストで話題が上っていた様な記憶があります。
SSLDisable
NameVirtualHost 123.45.67.89:80
<VirtualHost 123.45.67.89:80>
ServerName www.hogehoge.jp
:
:
</VirtualHost>
<VirtualHost 123.45.67.89:80>
ServerName www2.hogehoge.jp
:
:
</VirtualHost>
<VirtualHost 123.45.67.89:443>
ServerName www.hogehoge.jp
SSLEnable
:
:
</VirtualHost>
この様にすれば…
…の全てがアクセス可能です。もちろん
ではSSLが有効になります。
ただし、IPアドレスがひとつしかない場合は、ポート443を指定するhttpsなVirtualHostはひとつしか定義できません。
「
」みたいな抜け道はあります…。
Welcome! - The Apache Software Foundation
<VirtualHost 123.45.67.89> → <VirtualHost 123.45.67.89:443> した上で、その下の行に、
SSLEngine on
という行を入れてもダメですか?
もっとも、apacheがSSL対応でコンパイルされている必要がありますが。
ありがとうございます!