50pt
まず、ワイルドカード証明書とは
http://d.hatena.ne.jp/keyword/%A5%EF%A5%A4%A5%EB%A5%C9%A5%AB%A1%...
http://jp.globalsign.com/service/ssl/option/wildcard.html
などの説明にあるように証明書の中の普通はFQDN(www.example.comなど)が入っているところに「*.example.com」のようにサブドメインが「*」になっている証明書のことです。
サーバ側はこの証明書を普通の証明書の代わりに設定しておきます。
そのサーバにクライアントが接続しに行くときに
http://www.verisign.co.jp/repository/faq/SSL/https.html
の「2. サーバ証明書送付 (サーバ認証)」のところで「*.example.com」の証明書が送られてきて、クライアントが「*」の部分を特別扱いして、つなごうとしているサーバが「foo.example.com」や「bar.example.com」などの場合にOKと判断しています。
100pt
そもそも、SSLセキュアサーバを
同一IP・同一ポート、名前ベースで設定することができないと思い込んでいた
厳密な言い方をすると、Apache での設定自体は出来る。そしてサイトもそれぞれ区別される。
ただし、
SSLセキュアサーバを構築した場合、
Apacheがホスト名を取得する前に証明書の確認に入る
この理由により、本来の名前とは別の証明書が送られてしまうケースが出るため「事実上不可能」と言うのがただしい。
つまり実装上の問題はどの証明書を送るか区別できないことだけなので、
ワイルドカード証明書も利用できる
「も」ではなく「ワイルドカード証明書を使用すること」かつ「ワイルドカードの対象のドメインの組み合わせ」のみ名前ベースのバーチャルホストが機能することになる。
とりあえず「ワイルドカード証明書」自体の是非は置くとして原理的にはそれならブラウザのエラー無く表示することは可能。
100pt
URL の先の,どの技術について言及されているのかが分からないので,私が運用しているワイルドカード証明書における VirtualHost の例でお話します
まず,示されたペイジの繰り返しになってしまいますが,
・www.example.com (10.1.2.3)
・secure.example.com (10.1.2.4)
という構成でサーバが構築されている場合,10.1.2.3 には (CN=www.example.com) の証明書,10.1.2.4 には,(CN=secure.example.com) という証明書を設定すればいい,という話になりますね
しかし,IP アドレスが複数用意できない場合,
・www.example.com (10.1.2.3)
・secure.example.com (10.1.2.3)
という構成で作らざるをえません.すると,secure.example.com へアクセスしようとしても,サーバは (CN=www.example.com) の証明書を返してきますので,ブラウザでは CN の不一致として,警告を発する事になります
そこで,10.1.2.3 に設定するのを,(CN=*.example.com) というワイルドカード証明書にする,というソリューションが出てきます
しかし,10.1.2.3 に対する接続に対し,ユーザのリクエストに応じて,返すコンテンツを判断しないといけない(www.example.com なのか,secure.example.com なのか)ですから,この,10.1.2.3 は,コンテンツを返す VirtualHost ではなく,リバースProxy を動かす専用の VirtualHost として設定します
つまり,
・rproxy.exmaple.com (10.1.2.3:443,CN=*.example.com)
・www.example.com (10.1.2.3:80)
・secure.example.com (10.1.2.3:80)
という構成になります
ユーザが,www.example.com:443 にアクセスすると,(CN=*.example.com) の証明書が返ってきます.これは,CN 一致します
サーバは,Hostname を見て,内部で www.example.com:80 へプロキシします.これにより,ユーザには,www.example.com:80 の内容が,SSL で返答されます
さらに細かく理解できました。
お三方ともありがとうございました。
あぁ、大納得。複数の名前ベースバーチャルホストを設定してたとしたら、証明書区別できないから最初のやつ送られるんだろうなと思いました。
ん~、ブラウザ側がワイルドカードを理解すれば警告とかでないわけだ。
なるほど、「是非は置くとして」という記述も納得です。