バーチャルドメインとSSL

本格的に仕事を始めるにあたって、ドメインをとりました。自宅サーバではすでに独自ドメインで動いているサイトがあるので、バーチャルドメインの設定をして、1コのマシンで2コのサイトを動かしてみましょう。ちなみに自宅サーバの環境は

です。
『Webサーバー バーチャルドメインの設定』(http://www.psg.jp/web2_server.html)を参考にさせていただきながらhttpd.confを書き換えます。Apacheの参考書なんて持っていないので

httpd.confの確認方法
  # /usr/local/apache2/bin/apachectl configtest
  Syntax OK            ←この様に表示すればOKです。

というのは驚きでした。今までは再起動かけてエラーが表示されるのを読んでたよ。素晴らしい。
自宅サーバの強い見方であるEveryDNSで登録も済ませ『Linux自宅サーバ』(http://www.miloweb.net/)を参考にさせてもらいながらDiCEも設定し、2つともドメインネームでアクセスできるのを確認して万々歳さぁ酒さ呑むべ(方言)と思ったら問題発生。
元々動かしていたサーバではSSLをかけてhttps://〜でもアクセスできるようにしていたんですが、httpsで接続できなくなってやがる。
はてさて困ったナンダロね、と酒をしまいながら検索すると

HTTP プロトコルSSL の原理を考えてみても不可能なことは明らかですね。

ネームベースのバーチャルホストは、HTTP リクエストヘッダに含まれる「Host」を参照してアクセスするバーチャルホストを変化させますが、SSL 接続の場合、HTTP リクエストヘッダは暗号化されており、参照することができません。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17045&forum=10&5

ということらしい。つまり、接続リクエストの内容によって表示するサイトを替えているのに、リクエスト内容が暗号化されてるから無理だっぺ(方言)というコトか。うわぁ、ドウしよう。
選択肢は2つ。

  1. SSL接続は諦める
  2. 2つ目のサイトは外部にサーバを借りる

う〜、SSL接続のために証明書買っちゃってるし、外部にサーバ借りるのも金かかるし、ドッチも嫌だ。どうするどうする。
色々と検索していくうちに「1つのマシンにIPアドレスを2つ割り当てればイイのさ!」(http://www.fkimura.com/apache18.html)なんて記事も発見しましたが、ルータの設定をどうすればいいのか解らないので無視。んぁ〜困った〜と唸りながらビールを飲んでいて、フと思いついたことが。

ネームベースのバーチャルホストでは複数のSSLは使えません。
どうしてもバーチャルホストで複数利用したいということであればIPベースで運用することになります。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14143&forum=14&2

複数は使えない?・・・ってコは1コは使えるんじゃないの?
2本目の缶ビールを開けながらhttpd.confを眺めていると、どうやら僕が力技でやったSSLの設定自体に問題があるみたい。SSLの設定をした個所を読んでいくと、Port443へのアクセスには無条件にSSLを割り当てています。う〜ん、力技。つーか、バーチャルドメイン運用なんて想定の範囲外ですよ(流行語)。
無条件がダメなら条件つけてあげればイイんだろ、とばかりにドメインで指定してみましたが、無常にもエラー。IPアドレスで指定しても、同じIPで複数ドメインを運用しようとしてるんだから当然エラー。困ったナ〜といいながら3本目の缶ビールを開けていると、突然閃きが!!
Port443に接続要求が来たら、どのドメインで接続するのか指定しておけばイイんじゃねぇの?
ちょうど読んでいた『Webサーバー バーチャルドメインの設定』(http://www.psg.jp/web2_server.html)でいうところの290行目がコメントアウトされてるのが怪しい、と睨んでコメントアウトを外し、SSL接続が必要なドメインに書き換えます。Apache再起動・・・httpで接続・・・OK・・・SSLで接続・・・キタぞバカーーー!!!ヤッタネ!
2つ目のドメインSSL接続しようとすると「指定されてるドメインが違うヨ」というエラーが当然表示されますが、使う予定はないので無視しましょう。よかったヨカッタ。


※一応書いておきますが、素人が勉強用の自宅サーバを閃きで無根拠に設定したものですので、参考にすることで被害を被ったり損害が起きても、何も保証しません。
批判やアドバイスは喜んで受けますので、コメントよろしくお願いいたします。