IIS 8.0 Server Name Indication (SNI): SSL スケーラビリティ

執筆者: Shaun Eagan

互換性

バージョン メモ
IIS 8.0 IIS 8.0 で Server Name Indication が導入されました。
IIS 7.5 IIS 7.5 では Server Name Indication はサポートされていませんでした。
IIS 7.0 IIS 7.0 では Server Name Indication はサポートされていませんでした。

問題

より多くの e コマース サイトがオンライン化され、より多くの企業が機密文書をオンラインで保存および共有するようになるにつれ、セキュリティで保護されたサイトをホストし、拡張する機能の重要性はますます高まっています。 Windows Server 2012 以前では、セキュリティで保護されたサイトのホスティングに関していくつかの課題がありました。

  • SSL スケーラビリティ: 共有ホスティングなどのマルチテナント環境では、Windows Server でホストできるセキュリティで保護されたサイトの数に制限があり、サイト密度が低くなります。
  • IPv4 の不足: ネットワーク エンドポイントは IP:Port のバインディングでのみ識別できるため、テナントが標準 SSL ポート 443 の使用を要求する場合、セキュリティで保護されたサイトをホストするには、多くの場合、テナントごとに専用 IP アドレスを提供する必要があります。

解決策

Windows Server 2012 では、IIS は Server Name Indication (SNI) をサポートします。これは、SSL ネゴシエーションの一部として仮想ドメインを含めるための TLS 拡張機能です。 これは実質的に、仮想ドメイン名 (ホスト名) を使用してネットワーク エンドポイントを識別できるようになることを意味します。 さらに、SNI を補完するために、高度にスケーラブルな WebHosting ストアが作成されました。 その結果、Windows Server 2012 ではセキュリティで保護されたサイト密度がはるかに高く、1 つの IP アドレスだけで実現されます。

この機能を使用するには、クライアント ブラウザーで SNI をサポートする必要があります。 最新のブラウザーのほとんどは SNI をサポートしています。ただし、Windows XP の Internet Explorer (すべてのバージョン) では、SNI はサポートされていません。

ステップ バイ ステップの手順

前提条件:

  • IIS 8.0 が Windows Server 2012 にインストールされていること。

    • WebHosting 証明書ストアと SNI はどちらも、既定の IIS インストールの一部です。 サーバー マネージャーからインストールする必要がある特定の IIS 機能はありません。
  • サンプル証明書。

  • \windows\system32\drivers\etc\hosts が、サンプル サイトと証明書を使用するように変更されていること。 たとえば、証明書の CN 名が TAPTesting である場合、hosts ファイルには次を含める必要があります。

    127.0.0.1 TAPTesting
    

既知のバグの回避策:

従来の SSL バインディング (IP:Port) と SNI バインディング (Hostname:Port) が同じコンピューター上で構成されている場合、IIS マネージャーが意図しない SSL バインドを削除する場合があります。 この問題を回避したり、実際の SSL バインドを確認したりするには、次のコマンドライン ツールを使用します。

netsh http show sslcert

Web ホスティング ストアに証明書をインポートする:

  1. MMC を開きます。
  2. [ファイル] で、[スナップインの追加と削除] を選択します。
    Screenshot that shows the menu for File in M M C. Add Remove Snap in is highlighted.
  3. [証明書] を選択します。 [追加] をクリックします。
    Screenshot that shows the Add or Remove Snap ins dialog box with Certificates selected under Available snap ins.
  4. [コンピューター アカウント] を選択します。
    Screenshot that shows the Certificates snap in dialog box. Computer account is selected.
  5. [ローカル コンピューター] を選択して [完了] をクリックします。
    Screenshot that shows the Select Computer dialog box. Local computer is selected.
  6. [OK] をクリックします。
    Screenshot that shows the Add or Remove Snap ins.
  7. ナビゲーション ウィンドウで、[Web Hosting] (Web ホスティング) ストアを見つけます。
    Screenshot that shows Web Hosting highlighted under the Certificates node.
    Web ホスティング ストアは、Personal (パーソナル) ストアと同様に機能するため、証明書をインポートおよびエクスポートするための既存のすべてのツールは同じように動作します。 Web ホスティング ストアとパーソナル ストアの主な違いは、Web ホスティング ストアは、より多くの証明書にスケーリングするように設計されていることです。
  8. サンプル証明書を Web ホスティング ストアにインポートします。

セキュリティで保護された Web サイトを作成する:

  1. IIS マネージャーを開きます。

  2. 左側のナビゲーション ウィンドウで [サイト] を選択します。
    Screenshot that shows I I S Manager. Sites is selected.

  3. [サイト] を右クリックし、[Web サイトの追加] 選択します。
    Screenshot that shows the context menu for Sites.

  4. 通常のサイトを作成する場合と同様に、情報を入力します。

    • サイト名: Test

    • 物理パス: c:\inetpub\wwwroot

    • 種類: https

    • ホスト名: TAPTesting

      • これは、SSL にホスト名を指定できる Windows Server 8 の新機能です。
      • 証明書名の不一致エラーを回避するために、ここで指定したホスト名が証明書の CN 名と一致していることを確認します。
      • この構成の実際の値は、使用されているサンプル証明書によって異なります。
    • Server Name Indication を使用: 選択

    • SSL 証明書: 証明書の名前を選択します。例: TAPTesting。

      • 証明書は、パーソナル ストアと Web ホスティング ストアの両方から提示されることに注意してください。

      Screenshot that shows the Add Website dialog box.

  5. 次のようにサイトが作成されたことを確認します。
    Screenshot that shows Test highlighted under the Sites node.

  6. これで終了です。 SNI を使用してセキュリティで保護されたサイトが作成されました。 管理エクスペリエンスは、従来の SSL バインドによく似ています。 唯一の違いは次のとおりです。

    • SSL サイトにはホスト名を指定できます。
    • 証明書は、スケーラビリティのために Web ホスティング ストアに格納されます。

セキュリティで保護されたサイトをテストする:

ブラウザーを開き、 https://TAPTesting/ に移動します。 前提条件の一部として、hosts ファイルは、この要求を localhost にルーティングするように変更されていることに注意してください。

Screenshot that shows Internet Explorer. I I S 8 is written in large text on the web page.

さらに、新しい SSL バインドの種類を確認するには、管理者特権のコマンドライン ウィンドウに次のように入力します。

netsh http show sslcert

Screenshot that shows a command window. Host name and port are highlighted.

SSL バインドが、値 TAPTesting:443 を持つ hostname:port であることに注目してください。

シナリオ

次のシナリオをデプロイしてください。

  • SNI は、マルチテナント環境に合わせてスケーリングするように設計されています。 SNI を使用して、数千のセキュリティで保護されたサイトを構成してください。
  • 以前のバージョンの Windows Server とは異なり、Windows Server 2012 の証明書はオンデマンドでメモリに読み込まれます。 SNI を使用して何千ものセキュリティで保護されたサイトを構成した後、そのいずれかに GET 要求を送信し、メモリ使用量を確認します。 それはごくわずかです。 以前のバージョンの Windows Server では、何百ものセキュリティで保護されたサイトが構成されている場合、1 つの GET 要求を送信しただけで、Windows Server で "すべて" の証明書が読み込まれるため、メモリ使用量が多くなり、スケーラビリティがさらに制限されていました。
  • SNI と従来のセキュリティで保護されたサイトの両方で Windows Server 2012 を構成します。 これらは共存するように設計されています。

まとめ

Windows Server 2012 の Server Name Indication (SNI) 機能を確認できました。