SNIを使ってHTTPSでも名前ベースのバーチャルホストを実現する

この Server Name Indication - Wikipedia からの引用ですべて伝わりそうですが。

Server Name Indication (SNI, サーバー ネーム インディケーション, サーバ名表示)は、SSL/TLSの拡張仕様の一つである。SSLハンドシェイク時にクライアントがアクセスしたいホスト名を伝えることで、サーバ側がグローバルIPごとではなくホスト名によって異なる証明書を使い分けることを可能にする。SNIは特に、HTTP 1.1名前ベースバーチャルホストHTTPSに対応させるために使われる。SNIが働くにはWebサーバ側とブラウザ側両面の対応が必要である。SNIを実装しないブラウザでは全てのホスト名で同じサーバ証明書が使われるため、警告が表示されることがある。2012年時点において、SNIを実装しないブラウザはまだ数多く残っている。

 

HTTPSサイトを運用する場合は原則、1FQDNごとに1IPアドレスを割り当てますが、
開発環境がVPS1台・IPアドレス1点のみの構成だったとしても、
複数のHTTPSサイトを置けるということです(別々の証明書で設定可能)。

Apache HTTP Serverは2.2.12以降で対応していて、RHEL系だと6.0以降で使えます。

Windows XP上のIEをはじめとして非対応のクライアントも少なくありませんが、
ステージングサイト&プロダクションサイトの構成のときには
デフォルトのVirtualHostがプロダクションになるよう設定する、など少し配慮すれば
それほど障害にならずに利用できる場面があるのではないでしょうか。

Apache HTTP Server で要注意のディレクティブは SSLStrictSNIVHostCheck です。
SNI非対応クライアントからのリクエストを受けた時の挙動を規定するもので、
off : デフォルトのVirtualHostで応答 / on : 403 Forbidden を返す
となります。

プロダクション環境での利用は[Apache] SNIの落とし穴 » 株式会社パラファミリーで言及されているように
クローラーがSNI非対応である状況への配慮が必要です。

"googlebot server name indication""bingbot server name indication"で検索すると、
Googlebotは対応、Bingbotは非対応のようです。
(両検索サイトでの TLS SNI Test Site: *.sni.velox.ch のキャッシュから)

参考:NameBasedSSLVHostsWithSNI - Httpd Wiki