Hatena::Diary

花粉症と戦うWindowsServer2008 管理日記・・ このページをアンテナに追加 RSSフィード

花粉症対策に買ったダイキン空気清浄機ACM75J-Wと趣味・仕事の
Hyper-VとIIS(InternetInformationServices)についてわかったことを書いていきます。
間違いもあるかもしれません、いや、絶対にあります。。だから自己責任で試してくださいね。

2009-04-07

IIS7.0でServer Name Indication(SNI)を使って1つのIPに複数のHTTPSサイトをバインドする方法

HTTP1.1では、クライアントからのHTTPリクエストに記載されているホスト名を読んで、返答するWebサイトを判定することができます。(name based とかで検索すると出てきます)

しかしながらSSLサイト(HTTPS)の場合、これができないため、SSLを使用するサイト毎にIPアドレスを割り振る必要があります。

なぜかというと・・SSL通信の場合、クライアントはHTTPリクエストをサーバに投げる前にSSL暗号化の接続を行います。そして、暗号化が完了したのちにクライアントはHTTPリクエストを送信するのですが、その時にHTTPサーバは、暗号化済みHTTPヘッダーを復号化してホスト名を取りだす、という作業を行えません。

※大体こんな感じ、というくらいのノリで考えてください。

ですため、IPアドレスで応答するホストを判別しないといけないわけなんです。

しかしながら、JPRSも告知している通り、IPv4アドレスは早ければ2010年、遅くても2013年には使い切ってしまい、新しく割り振りを受けることが出来なくなってしまいます。

一方では、個人情報保護の関係上、WebサイトにSSLを使用する必要性は非常に高まっていますので、IPアドレスの必要性が高まっています。。

けれども、実はこの解決法はRFCにも記述されているんです。

RFC 3546 Transport Layer Security (TLS) Extensions

これによると、SSL接続時、最初のCLIENT HELLOと同時に要求ホスト名もサーバに投げるのでサーバはホスト名に応じた返答すればOK、ということのようです。

さて、IISではSNIでのレスポンスに6.0から対応していました。ただし、コマンドでのみのサポートとなります。

IIS7.0では管理コンソールから登録できるようになったかな?と調べてみましたが、やはりコマンドラインだけでのサポートとなっているようです。


せっかくなのでコマンドでも・・

appcmd set site /site.name:"サイト名" /+bingings.[protocol='https',bindingInformation='*:443:listenしたいホスト名']

f:id:windowsserver:20090407160516j:image

なお、登録したものを消したい場合、/+bindingsのプラスをマイナスにすればOKです。


※ただし、クライアントのブラウザ側でも対応してくれないと使えないのですが・・・

IE7/8,FireFox2/3,GoogleChromeは対応済みだそうですから、以後数年以内には実用化できるのではないでしょうか。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/windowsserver/20090407/1239087995




にほんブログ村 IT技術ブログ Windowsサーバへ  にほんブログ村 病気ブログ アレルギーの病気へ  ブログランキング・にほんブログ村へ  にほんブログ村 IT技術ブログへ