自宅サーバーで複数サイトを公開するのにapacheのバーチャルホスト機能はとても便利ですね。
いままで、ここのブログはapache2のNAMEベースのバーチャルホストでサブドメインとして運用していました。
さらにサイト全体をhttpsから始まるSSL通信にしています。
いまどきのブラウザからのアクセスでは特に問題ないのですが、古めのブラウザからアクセスしようとすると、メインサイトのSSL証明書しか使えずにブラウザから怪しいぞと警告が出てしまいます。
こんな警告が出たら、×で閉じてしまいますよね。
ちゃんとした証明書を使っているのに、オレオレ証明書を使っているサイトと同じ扱いになってしまいます。
SSL証明書にはワイルドカード対応のモノもありますが、当サイトは一番安いRapid SSLを複数利用している前提の記事です。
このページの目次
ネームベースのバーチャルホストじゃダメなんですか?
実際にネームベースのバーチャルホストでSSL通信にて運用していた結論ですが、「いまどきのブラウザからのアクセスならばネームベースでもまったく問題なし」です。
ネットで調べるとSSL通信を利用するには、IPベースのバーチャルホストが必要と出てくることが多いですが、2015年のいまどき、ブラウザ側が対応していることがほとんどです。
どのくらい古いブラウザだと警告が出るのか
- WindowsだとIE8以前
- Android2.3以前のandroid標準ブラウザ
MacとiOSは未確認ですが、だいたい同じ時期だと思います。
windows7でIE8のままというPCはほぼ無し、VistaでもIE9になっているハズ、XPが全台対象ですが2014年でサポート終了しています。
Android2.3やXPでも標準ブラウザ以外を利用していればOKです。
そう考えると、もうすでにそれほど気にしなくてもいいレベルと言えるのではないでしょうか?
ウチは環境に恵まれ、IPベースが利用可能でした。
前にも記事にしましたが、ウチはインターネット回線がSpaaqs光ホームタイプを契約していて標準でグローバルIPアドレスが5個も使えます。
しかし家庭内の諸事情から、サーバーは1台しか置けません。
こんな構成で利用していまして、PCサーバーに直接グローバルIPを割り振り、もう一つのIPは家庭内LAN用ルーターで利用、残りのグローバルIPを3個を未使用だったのですが、実はLANポート一つで複数IPを利用できるというのを最近知りました。
なんと、追加設備なしでIPベースのバーチャルホストが利用できる恵まれた環境にいた事に最近気付きました。
こんな自宅サーバーに最適で、NTTフレッツ光ホームタイプよりも安いspaaqs光ホームタイプですが、残念ながら新規契約受付終了となっています。
一つのLANポートに複数のIPアドレスを指定する
LANポートひとつにIPアドレスを複数設定することができるんですね、知りませんでした。
Linuxでもwindowsでも簡単にできるようです。
今回はDebianでの設定ですが、その他Linuxやwindowsでの方法はググって調べてください。
/etc/network/interfaces に追記
もともと固定IPの設定で一つ目のグローバルIPを設定していました。
IPアドレスはダミー値です。
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet static address 222.222.222.222 netmask 255.255.255.0 gateway 222.222.222.221
ここに2つ目、3つ目のIPアドレスを追加します。
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet static address 222.222.222.222 netmask 255.255.255.0 gateway 222.222.222.221 auto eth0:0 allow-hotplug eth0:0 iface eth0:0 inet static address 222.222.222.223 netmask 255.255.255.0 auto eth0:1 allow-hotplug eth0:1 iface eth0:1 inet static address 222.222.222.224 netmask 255.255.255.0
2つ目のIPを、eth0:0
3つ目のIPを、eth0:1
と追加していきます。
参考:Debian Wiki
再起動
今回の追記はサービスの再起動で有効になります。
/etc/init.d/networking restart
確認はifconfigコマンドで、動作確認はpingが通ればOKです。
VirtualHostディレクティブの編集
debianの場合は、/etc/apache2/sites-available のディレクトリ内にあるファイルを編集します。
今回はすでに名前ベースのバーチャルホストで運用しているサブドメインをIPベースに変更する前提です。
defaultファイルか、default-sslファイル、もしくは自分で追加したファイル内の変更したいサブドメインのVirtualHostディレクティブから記述をコピーします。
ポート80とポート443で別々のファイルに記述が分かれていると思いますが、環境によります。
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName blog.ikt-s.com DocumentRoot /var/blog ~省略~ </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@localhost ServerName blog.ikt-s.com DocumentRoot /var/blog ~省略~ </VirtualHost>
直接書き換えると、アクセス不能な時間が出てしまうので、別ファイルを作ってコピペして編集します。
<VirtualHost 222.222.222.223:80> ServerAdmin webmaster@localhost ServerName blog.ikt-s.com DocumentRoot /var/blog ~省略~ </VirtualHost> <VirtualHost 222.222.222.223:443> ServerAdmin webmaster@localhost ServerName blog.ikt-s.com DocumentRoot /var/blog ~省略~ </VirtualHost>
<VirtualHost *:80>の「*」を固定IPのアドレスに変更します。同じく<VirtualHost *:443>も変更します。
NAMEベースとIPベースのバーチャルホストは混在可能なので、混在した記述にしています。
a2ensiteで新しい設定ファイルを追加
新しく追加したVirtualHostディレクティブの設定ファイルを追加します。
a2ensite [ファイル名]
apache再起動
apache再起動後に設定が有効になります。
/etc/init.d/apache2 restart
ここでerror(エラー)やwarn(警告)が出るようであれば、sites-available内のファイルとports.confファイルの記述を見直しましょう。
DNSサーバーの登録変更
最後にDNSサーバーのAレコードを追加したグローバルIPに変更して、設定変更完了です。
私の場合は、お名前.comのDNS管理サービスを利用しているので説明は省きます。
動作確認
- XPのIE6
- windows7のIE8
- Android2.3のOS標準ブラウザ
- iPhone3GのOS3.1.3のSafari
私が確認できたのはこの4種類です。
いずれもいままで証明書の警告が出ていたブラウザでしたが、今回の設定後はちゃんと証明書が有効になっています。