[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 を持つサーバ群がすべて「実行中」に!
ちなみに一度設定してしまえば、再起動しても大丈夫。
すばらしい!
注意
バインドはドメイン名が異なるサーバ同士でも可能ですが、その中で使用できる証明書は一つのみです。
SSL通信は通常、ホストヘッダは暗号化され、特定のサーバに到達した後に復号が行われます。
そのため「1.jp」「2.com」など異なるドメイン同士でバインドするとSSL通信が意図しない方に到達し、復号の過程でサーバ証明書不一致エラー…という事が起こり得ます。
複数の証明書を使う場合は、従来どおりIPかポートを変えましょう。