次の方法で共有


Web 同期用に IIS 7 を構成する

適用対象:SQL Server

この記事の手順では、マージ レプリケーション用の Web 同期で使用するために、インターネット インフォメーション サービス (IIS) バージョン 7 以降を手動で構成するプロセスについて説明します。

IIS 7 以降の構成は、Web 同期を有効にするために必要な 3 つの手順のうちの最初の手順です。

構成プロセス全体の概要については、「Configure Web Synchronization (Web 同期の構成)」をご覧ください。

アプリケーションで .NET Framework 2.0 以降のバージョンのみが使用されていること、および以前のバージョンの .NET Framework が IIS サーバーにインストールされていないことを確認します。 以前のバージョンの .NET Framework では、次のようなエラーが発生する可能性があります。

The format of a message during Web synchronization was invalid. Ensure that replication components are properly configured at the Web server.

Web 同期を使用するには、次の手順を完了して IIS を構成する必要があります。 各手順については、この記事で詳しく説明します。

  1. IIS を実行しているコンピューターに SQL Server レプリケーション リスナーをインストールして構成します。

  2. トランスポート層セキュリティ (TLS) (旧称 Secure Sockets Layer (SSL)) を構成します。 IIS とすべてのサブスクライバー間の通信には TLS が必要です。

  3. IIS 認証を構成します。

  4. アカウントを構成し、SQL Server レプリケーション リスナーの権限を設定します。

SQL Server レプリケーション リスナーをインストールする

Web 同期は、バージョン 5.0 以降の IIS でサポートされます。 IIS バージョン 5 および 6 の Web 同期の構成ウィザードは、IIS バージョン 7.0 以降では使用できません。

SQL Server 2012 (11.x) 以降のバージョンの IIS サーバーで Web 同期コンポーネントを使用するには、レプリケーションを使用して SQL Server をインストールする必要があります。 これには、無料の SQL Server Express エディションが含まれます。

SQL Server レプリケーション リスナーをインストールして構成する

  1. SQL Server レプリケーションを IIS コンピューターにインストールします。

  2. IIS を実行しているコンピューターに、replisapi.dll 用の新しいファイル ディレクトリを作成します。 ディレクトリはどこに作成してもかまいませんが、<drive>:\Inetpub ディレクトリの下に作成することをお勧めします。 たとえば、ディレクトリ <drive>:\Inetpub\SQLReplication\ を作成します。

  3. replisapi.dll <drive>:\Program Files\Microsoft SQL Server\nnn\COM\ のディレクトリから、手順 1 で作成したファイル ディレクトリにコピーします。

  4. 次の手順に従って replisapi.dll を登録します。

    1. スタートを選択し、次に実行を選択します。 [ 開く ] ボックスに「 cmd」と入力し、[ OK] を選択します。

    2. 手順 1. で作成したディレクトリで、次のコマンドを実行します。

      regsvr32 replisapi.dll
      
  5. レプリケーション用の新しい Web サイトを作成するか、既存のサイトを使用します。 この Web サイトは、同期の際にレプリケーション コンポーネントからアクセスされます。 この記事の手順では、既定の Web サイトを想定しています。 Web サイトを作成する方法の詳細については、IIS のマニュアルを参照してください。

  6. IIS で仮想ディレクトリを作成します。 仮想ディレクトリは、手順 4. で作成した Web サイトの下に作成し、手順 1. で作成したディレクトリにマッピングします。 このディレクトリに割り当てる権限は最小限にしてください。 少なくとも [読み取り][実行] の権限を選択する必要があります。

    1. インターネット インフォメーション サービス (IIS) マネージャー[接続] ペインで [既定の Web サイト]を右クリックし、 [仮想ディレクトリの追加]を選択します。

    2. [ エイリアス] に「 SQLReplication」と入力します。

    3. [物理パス] に「<drive>:\Inetpub\SQLReplication\」と入力し、[OK] を選択します

  7. replisapi.dll を実行できるように IIS を構成します。

    1. インターネット インフォメーション サービス (IIS) マネージャーで、[既定の Web サイト] を選択します。

    2. 中央のウィンドウで、[ ハンドラー マッピング] を選択します。

    3. [操作] ウィンドウで、[モジュール マッピングの追加] を選択します。

    4. [要求パス] に、「 replisapi.dll」と入力します。

    5. [モジュール] ドロップダウン リストから [IsapiModule] を選択します。

    6. [実行可能ファイル] に「<drive>:\Inetpub\SQLReplication\replisapi.dll」と入力します。

    7. [名前]に「 Replisapi」と入力します。

    8. [ 要求の制限 ] ボタンを選択し、[ アクセス ] タブを選択し、[ 実行] を選択します。

    9. [ OK] を 選択して [ 要求の制限 ] ダイアログ ボックスを閉じ、もう一度 [OK] を 選択して [ モジュール マッピングの追加 ] ダイアログ ボックスを閉じます。 ISAPI 拡張機能を許可するように求められたら、[ はい ] を選択して拡張機能を追加します。

    10. Replisapi.dll が [有効] のハンドラー マッピングの一覧に表示されていることを確認します。 [無効] リストにある場合は、Replisapi エントリを右クリックし、[機能の権限の編集] を選択します。 [ 実行 ] ボックスをオンにし、[ OK] を選択します。

IIS 認証を構成する

サブスクライバーのコンピューターが IIS に接続するには、サブスクライバーがリソースやプロセスにアクセスする前に、IIS がサブスクライバーを認証する必要があります。 認証は、Web サイト全体または作成した特定の仮想ディレクトリに適用することができます。

基本認証と TLS を組み合わせて使用することをお勧めします。 (使用する認証の種類にかかわらず、TLS は必須です)。

IIS 認証の構成

  1. インターネット インフォメーション サービス (IIS) マネージャーで、[既定の Web サイト] を選択します。
  2. 中央のペインで、 [認証]をダブルクリックします。
  3. [匿名認証] を右クリックし、[無効にする] をクリックします。
  4. [基本認証] を右クリックし、[有効にする] をクリックします。

Secure Sockets Layer の構成

TLS を構成するには、IIS を実行しているコンピューターが使用する証明書を指定する必要があります。 マージ レプリケーション用の Web 同期では、サーバー証明書のみがサポートされており、クライアント証明書はサポートされていません。 配置用に IIS を構成するには、最初に証明機関 (CA) から証明書を取得する必要があります。 証明書の詳細については、IIS のマニュアルを参照してください。

証明書をインストールしたら、その証明書を Web 同期で使用する Web サイトと関連付ける必要があります。 開発やテストでは、自己署名証明書を指定できます。 この場合、IIS 7 で証明書を作成してコンピューターに登録できます。

運用環境向けのデプロイとここで示す手順の違いは、運用環境と運用前テストでは、自己署名証明書ではなく CA によって発行された証明書を使用することです。

重要

運用環境のインストールでは、自己署名証明書は推奨されません。 自己署名証明書はセキュリティで保護されていません。 自己署名証明書を使用するのは、開発およびテストのときだけにしてください。

TLS を構成するには、次の手順を実行します。

  1. TLS を要求し、クライアント証明書を無視するように Web サイトを構成します。
  2. CA から証明書を取得するか、自己署名証明書を作成します。
  3. 証明書をレプリケーション Web サイトにバインドします。

Web サイトに SSL セキュリティを要求する

  1. インターネット インフォメーション サービス (IIS) マネージャーで、ローカル サーバー ノードを展開し、既定の Web サイト (既定の Web サイトと異なる場合は Web 同期サイト) を選択します。

  2. 中央のペインで、 [SSL 設定]をダブルクリックします。

  3. [SSL が必要] チェック ボックスをオンにします。 [クライアント証明書]で、 [無視] が選択されていることを確認します。

テスト用の自己署名証明書を作成する

  1. インターネット インフォメーション サービス (IIS) マネージャーで、ローカル サーバー ノードを選択し、中央のウィンドウで [サーバー証明書] をダブルクリックします。

  2. [操作] ウィンドウで、[証明書 Self-Signed 作成] を選択します。

  3. [ 証明書 Self-Signed 作成 ] ダイアログ ボックスで、証明書の名前を入力し、[ OK] を選択します。

証明書を Web サイトにバインドする

  1. [ 接続 ] ウィンドウで、 既定の Web サイト (既定の Web サイトと異なる場合は Web 同期サイト) を選択します。

  2. [操作] ウィンドウで、[バインド] を選択し、[追加] を選択します。 [サイト バインド の追加] ダイアログ ボックスが表示されます。

  3. [種類] ドロップダウン リストから [https] を選択します。 [IP アドレス][ポート]は既定の設定のままにします。

  4. [SSL 証明書] ドロップダウン リストから、[テスト用の自己署名証明書を作成するには] で作成した証明書を選択し、[OK] を選択して 、[閉じる] を選択します。

証明書をテストする

  1. インターネット インフォメーション サービス (IIS) マネージャーで、[既定の Web サイト] を選択します。

  2. 「操作」ペインで、閲覧 *:443(https) を選択します。

  3. Internet Explorer が開き、"この Web サイトのセキュリティ証明書に問題があります" というメッセージが表示されます。この警告は、関連付けられている証明書が認識された CA によって発行されておらず、信頼できない可能性があることを示します。 これは予期される警告であるため、 この Web サイトに進む (推奨されません) を選択します。

  4. localhost への接続を求めるメッセージが表示されたら、続行するユーザー名とパスワードを入力します。 これで、Web サイトの既定のページが表示されます。

SQL Server レプリケーション リスナーのアクセス許可を設定する

サブスクライバーのコンピューターが IIS を実行しているコンピューターに接続するときは、IIS の構成時に指定した認証の種類を使用して、サブスクライバーが認証されます。 IIS はサブスクライバーを認証した後、サブスクライバーに SQL Server レプリケーションを実行する権限があるかどうかを確認します。 replisapi.dll の権限を設定して、SQL Server レプリケーションを実行できるユーザーを制御します。 SQL Server レプリケーションに許可なくアクセスされることがないように権限を正しく構成する必要があります。

SQL Server レプリケーション リスナーの実行に使用するアカウントを最小の権限で構成するには、次の手順を完了する必要があります。 次の手順の手順は、IIS 7.0 を実行している Windows Server 2008 に適用されます。

次の手順の他に、PAL (パブリケーション アクセス リスト) に必要なログインが登録されていることを確認してください。 PAL の詳細については、「Secure the Publisher (パブリッシャーのセキュリティ保護)」を参照してください。

重要

このセクションで作成するアカウントは、同期中にパブリッシャーとディストリビューターに接続するアカウントです。 したがって、ディストリビューション サーバーとパブリケーション サーバーに SQL ログイン アカウントとして追加する必要があります。

SQL Server レプリケーション リスナーに使用されるアカウントには、 マージ エージェントのセキュリティ に関する記事の「パブリッシャーまたはディストリビューターへの接続」セクションの説明に従って、アクセス許可が必要です。

このアカウントに必要な権限の概要を以下に示します。

  • パブリケーション アクセス リスト (PAL) のメンバーである。
  • パブリケーション データベース内のユーザーに関連付けられたログインにマップされている。
  • ディストリビューション データベース内のユーザーに関連付けられたログインにマップされている。
  • スナップショット共有の読み取り権限を持つ。

アカウントとアクセス許可を構成する

  1. IIS を実行しているコンピューターでローカル アカウントを作成します。

    1. サーバー マネージャーを開きます。 [スタート] メニューの [ コンピューター] を右クリックし、[ 管理] を選択します。

    2. サーバー マネージャーで、 [構成]を展開し、 [ローカル ユーザーとグループ]を展開します。

    3. [ユーザー] を右クリックし、 [新しいユーザー] を選択します。

    4. ユーザー名と複雑なパスワードを入力します。 [ユーザーは次回ログオン時にパスワードの変更が必要]チェック ボックスをオフにします。

    5. [ 作成] を選択し、[ 閉じる] を選択します。

  2. アカウントを IIS_IUSRS グループに追加します。

    1. サーバー マネージャーで、[構成] を展開し、[ローカル ユーザーとグループ] を展開し、[グループ] を選択します

    2. IIS_IUSRSを右クリックし、[グループに追加] を選択します。

    3. [ IIS_IUSRSプロパティ ] ダイアログ ボックスで、[ 追加] を選択します。

    4. [ユーザー、コンピューター、またはグループの選択] ダイアログ ボックスで、手順 1. で作成したアカウントを追加します。

    5. [この場所から] ローカル コンピューターの名前(ドメインではない)が表示されていることを確認してください。 このフィールドにローカル コンピューター名が表示されない場合は、[場所] を選択 します。 [ 場所 ] ダイアログ ボックスで、ローカル コンピューターを選択し、[ OK] を選択します。

    6. [ ユーザーの選択 ] ダイアログ ボックスと [IIS_IUSRSプロパティ ] ダイアログ ボックスで、[ OK] を選択します

  3. replisapi.dll が保存されているフォルダーに対する最小限の権限をアカウントに許可します。

    1. Windows エクスプローラーで、replisapi.dll用に作成したフォルダーを右クリックし、[ プロパティ] を選択します。

    2. セキュリティタブで、編集をクリックします。

    3. [<foldername のアクセス許可>ダイアログ ボックスで、[追加] を選択して、手順 1 で作成したアカウントを追加します。

    4. [この場所から] ローカル コンピューターの名前(ドメインではない)が表示されていることを確認してください。 このフィールドにローカル コンピューター名が表示されない場合は、[場所] を選択 します。 [ 場所 ] ダイアログ ボックスで、ローカル コンピューターを選択し、[ OK] を選択します。

    5. アカウントには、[読み取り][読み取りと実行][フォルダーの内容の一覧表示] のみが許可されていることを確認します。

    6. ディレクトリへのアクセスを必要としないユーザーまたはグループを選択し、[ 削除] を選択して、[ OK] を選択します

  4. インターネット インフォメーション サービス (IIS) マネージャーでアプリケーション プールを作成します。

    1. インターネット インフォメーション サービス (IIS) マネージャー[接続] ペインで、ローカル サーバーのノードを展開します。

    2. [ アプリケーション プール] を右クリックし、[ アプリケーション プールの追加] を選択します。

    3. アプリケーション プールの名前を入力し、残りのフィールドの既定値のままにして、[ OK] を選択します。

    3 つ以上の同期クライアントが同時に実行される可能性がある場合は、Web ガーデンを作成できます。 詳細については、「 Web ガーデンの作成」を参照してください。

  5. アカウントとアプリケーション プールを関連付けます。

    1. インターネット インフォメーション サービス (IIS) マネージャーで、ローカル サーバー ノードを展開し、[アプリケーション プール] を選択します。

    2. 作成したアプリケーション プールを右クリックし、[ アプリケーション プールの既定値の設定] を選択します。

    3. [ アプリケーション プールの既定値 ] ダイアログ ボックスで、[ プロセス モデル ] セクションまで下にスクロールし、[ ID ] フィールドを選択します。

    4. ID 行の右側にある省略記号ボタンを選択します。

    5. [ カスタム アカウント ] ラジオ ボタンを選択し、[ 設定] を選択します。

    6. [ ユーザー名 ] フィールドと [ パスワード ] フィールドに、手順 1 で作成したアカウントとパスワードを入力し、[ OK] を選択します。

    7. [ OK] を 選択して [ アプリケーション プール ID ] ダイアログ ボックスを閉じ、もう一度 [OK] を 選択して [ アプリケーション プールの既定値 ] ダイアログ ボックスを閉じます。

  6. アプリケーション プールとレプリケーション Web サイトを関連付けます。

    1. インターネット インフォメーション サービス (IIS) マネージャーで、ローカル サーバー ノードを展開し、既定の Web サイト (既定の Web サイトと異なる場合は Web 同期サイト) を選択します。

    2. [操作] ウィンドウの [Web サイトの管理] で、[詳細設定] を選択します。

    3. [ 詳細設定] ダイアログ ボックスで、 アプリケーション プールの右側にある省略記号ボタンを選択します。

    4. [ アプリケーション プール ] ドロップダウン リストから、手順 4 で作成したアプリケーション プールを選択し、[ OK] を選択します。

    5. もう一度 [OK] を 選択して、[詳細設定] を閉じます。

への接続をテストする replisapi.dll

診断モードで Web 同期を実行し、IIS を実行しているコンピューターへの接続をテストして、TLS/SSL 証明書が正しくインストールされることを確認します。 診断モードで Web 同期を実行するには、IIS を実行しているコンピューターの管理者である必要があります。

  1. サブスクライバーの LAN (ローカル エリア ネットワーク) が正しく設定されていることを確認します。

    1. Internet Explorer の Tools メニューの [Internet オプション 選択

    2. [ Connections タブで、[LAN 設定 選択

    3. プロキシ サーバーが LAN で使用されていない場合は、[ 設定の自動検出] をオフにし、 LAN にプロキシ サーバーを使用します

    4. プロキシ サーバーを使用する場合は、[ LAN にプロキシ サーバーを使用 する] と [ローカル アドレスにプロキシ サーバーをバイパスする] の順に選択し、[ OK] を選択します

  2. サブスクライバー側の Internet Explorer から診断モードでサーバーに接続します。診断モードで接続するには、replisapi.dll のアドレスの後に「 ?diag 」を追加します。 (例: https://<server.___domain.com>/directory/replisapi.dll?diag)。

    前の例では、<server.___domain.com>は、IIS マネージャーの [サーバー証明書] セクションに記載されている正確な発行先名に置き換える必要があります。

  3. IIS に指定した証明書が Windows オペレーティング システムで認識されない場合は、[ セキュリティアラート ] ダイアログ ボックスが表示されます。 このアラートは、証明書がテスト証明書であるか、Windows で認識されない証明機関 (CA) によって発行された証明書が原因で発生する可能性があります。

    このダイアログ ボックスが表示されない場合は、アクセスしているサーバーの証明書が信頼できる証明書としてサブスクライバーの証明書ストアに追加されていることを確認します。 証明書のエクスポートの詳細については、IIS のマニュアルを参照してください。

    1. [ セキュリティ アラート ] ダイアログ ボックスで、[ 証明書の表示] を選択します。

    2. [ 証明書 ] ダイアログ ボックスの [ 全般 ] タブで、[ 証明書のインストール] を選択します。

    3. 証明書インポート ウィザードを実行します。このウィザードでは既定の値をそのまま使用します。

    4. [ セキュリティ警告 ] ダイアログ ボックスで、[ はい] を選択します。

    5. 証明書のインポート ウィザードの確認ダイアログ ボックスで、[ OK] を選択します

    6. [証明書] ダイアログ ボックスを閉じます。

    7. [ セキュリティ アラート ] ダイアログ ボックスで、[ はい] を選択します。

    ユーザーの証明書がインストールされます。 IIS と同期するユーザーすべてに対してこの手順を実行する必要があります。

  4. [<ServerName に接続]> ダイアログ ボックスで、マージ エージェントが IIS サーバーへの接続に使用するログインとパスワードを指定します。 これらの資格情報は、サブスクリプションの新規作成ウィザードで指定することもできます。

  5. SQL Websync 診断情報と呼ばれる Internet Explorer ウィンドウで、ページの各 [状態] 列の値がSUCCESSされていることを確認します。

  6. 証明書がサブスクライバーに正しくインストールされていることを確認します。

    1. Internet Explorer をいったん閉じてから、再度開きます。

    2. サーバーに診断モードで接続します。 証明書が正しくインストールされている場合、[ セキュリティアラート ] ダイアログ ボックスは表示されません。 ダイアログ ボックスが表示された場合、マージ エージェントは IIS を実行しているコンピューターに接続しようとしたときに失敗します。 アクセスしているサーバーの証明書が、信頼できる証明書としてサブスクライバーの証明書ストアに追加されていることを確認する必要があります。 証明書のエクスポートの詳細については、IIS のマニュアルを参照してください。