2009/07/24

wildcard subjectaltname virtualhost

SSL と VirtualHost 関連で「どうなの?」的なことを問われたので
確か素敵まとめサイトがあったと思って検索したら
SSL/TLS で Namebase のバーチャルホスト
が出てきました
素敵!!
VhostTaskForce - CAcert Wiki
ここも素敵かな??

多分 Apache 用語ですけど
VirtualHost
1 つのウェブサーバで複数のウェブサイトを構築
IP address ベースと Name ベースのものがある
IP ベース VirtualHost
アクセスがあった IP address 毎に
サイト・コンテンツを指定して複数サイトがあるように見せる
IP address が複数必要なので場合によってはコストが高い
Name ベース VirtualHost
サーバーの名前毎にコンテンツを振り分ける VirtualHost
IP address が 1 つしかなくても複数のサイトが構築できる
HTTP 1.1 とかで Host というヘッダをクライアントは送るので
そこで判断してるんですよね?? きっと

で、こっから少し古い話

一方 SSL は TCP の接続の後にネゴシエーションするわけですが
ここにはまだ Apache 出てこないんで Host とかの内容見ません
SSL のネゴシエーションのときに分かるのは TCP までの情報なので
IP address とか port 番号とかです
なので、HTTPS でサーバが証明書を提示する際にどの証明書を提示するか
それを決める判断の基準も IP address とか port 番号しかありません

IP ベースの VirtualHost であれば IP address と port 番号毎に
1 つサイトが決まっているので証明書を提示してあげれば良いのですが
1 つの IP アドレスの下で Name ベースの VirtualHost をしてる場合
それら VirtualHost 達で 1 枚しか証明書が提示できません
なのでワイルドカードや SubjectAlternativeName などを利用して
1 枚で複数の FQDN に対応できる証明書が利用されています

古い話終わり

で、RFC 3546 で TLS 拡張で Server Name Indication ってのが定義されてるそうで
TLS レベルで接続したいサーバの名前を指定する仕組みが決められて
それ使えば Name ベースの VirtualHost でも問題無しに
1 Host 毎に 1 枚証明書を対応付けれて IP address もぉ要らないよ!
ということになっているみたいです

IE7 以降とか Fx 2 以降とか Opera 8 以上は対応してるみたいなんですが
携帯とかどうなんだろう??

更に、RFC 2817 では Upgrading to TLS という仕組みも定義されてるとか
HTTP 1.1 から TLS な世界に切り替わるみたいですが
ちょっと、ググっただけでは対応状況までは分かりませんでした

Server Name Indication が普及してくれると分かり易くていいですね

0 件のコメント:

コメントを投稿