[IIS6] ワイルドカードSSLを使って、ホスト名のみで区別されたWebサーバ群を運用する方法

IISで複数のWebサーバを設置するには、通常「IPアドレス」「ポート」「ホスト名」のいずれかが異なればOKですが、SSLを使う場合は「ホスト名」が異なるだけではダメとされています。

ということはワイルドカードSSLを使うにも、全部異なるIPかポートにしないとダメなの?「ホスト名」を変えるだけでOKにする方法はないの!?

…そんな貴方に「SSLホストヘッダサーババインド」がございます。
なんとコマンドプロンプトに↓魔法の言葉↓を入れるだけ。

cscript.exe adsutil.vbs set /w3svc/<サイトの識別子>/SecureBindings “:443:<ホスト名(完全装飾ドメイン名)>”

あ、Windows Server 2003 SP1 以上限定です。


試しにやってみました。
識別子 66, 67, 68 を持つサブドメイン a, b, c に魔法の言葉を掛けてみます。

cscript.exe adsutil.vbs set /w3svc/66/SecureBindings “:443:a.dsk.jp”
cscript.exe adsutil.vbs set /w3svc/67/SecureBindings “:443:b.dsk.jp”
cscript.exe adsutil.vbs set /w3svc/68/SecureBindings “:443:c.dsk.jp”

するとどうでしょう。
SSL:443 を持つサーバ群がすべて「実行中」に!

multiSSL

ちなみに一度設定してしまえば、再起動しても大丈夫。
すばらしい!

注意
バインドはドメイン名が異なるサーバ同士でも可能ですが、その中で使用できる証明書は一つのみです。
SSL通信は通常、ホストヘッダは暗号化され、特定のサーバに到達した後に復号が行われます。
そのため「1.jp」「2.com」など異なるドメイン同士でバインドするとSSL通信が意図しない方に到達し、復号の過程でサーバ証明書不一致エラー…という事が起こり得ます。

複数の証明書を使う場合は、従来どおりIPかポートを変えましょう。