HTTP および HTTPS の構成

WCF サービスと WCF クライアントは、HTTP および HTTPS を介して通信できます。HTTP または HTTPS の設定は、インターネット インフォメーション サービス (IIS) またはコマンド ライン ツールを使用して構成します。WCF サービスが IIS でホストされている場合は、IIS 内で HTTP または HTTPS の設定を構成できます (inetmgr.exe ツールを使用)。WCF サービスが自己ホスト型の場合は、コマンド ライン ツールを使用して HTTP または HTTPS の設定を構成します。

HTTP 設定の構成に使用するツールは、コンピューターで実行されているオペレーティング システムによって異なります。

Windows Server 2003 または Windows XP を実行している場合は、HttpCfg.exe ツールを使用します。Windows Server 2003 ではこのツールが自動的にインストールされます。Windows XP を実行している場合は、「Windows XP Service Pack 2 サポート ツール」からツールをダウンロードできます。詳細については、次のトピックを参照してください。、「Httpcfg の概要」を参照してください。

Windows Vista または Windows 7 を実行している場合は、Netsh.exe ツールを使用してこれらの設定を構成します。

SSL 証明書の構成

SSL (Secure Sockets Layer) プロトコルは、クライアントとサーバー上で証明書を使用して暗号化キーを格納します。サーバーは、クライアントがサーバーの ID を検証できるように接続時に SSL 証明書を提供します。また、サーバーはクライアントに証明書を要求して、接続の両側で相互認証を実行することもできます。

証明書は、接続の IP アドレスとポート番号に基づいて集中ストアに格納されます。特別な IP アドレス 0.0.0.0 は、ローカル コンピューターの任意の IP アドレスに一致します。証明書ストアでは、パスを基準にした URL を区別しません。同じ IP アドレスとポートの組み合わせを持つサービスは、そのサービスの URL でのパスが異なる場合でも証明書を共有する必要があります。

手順の詳細については、「方法 : SSL 証明書を使用してポートを構成する」を参照してください。

名前空間予約の構成

名前空間予約では、HTTP URL 名前空間の一部に対する権限を特定のユーザー グループに割り当てます。予約によって、名前空間のその部分でリッスンするサービスを作成する権限をユーザーに与えます。予約は URL プレフィックスを使用します。つまり、予約は予約パスのすべてのサブパスを範囲とします。名前空間予約では、2 つの方法でワイルドカードを使用できます。HTTP Server API のドキュメントでは、ワイルドカードを含む名前空間クレーム間の解決順序について説明しています。

実行中のアプリケーションは、同様の要求を作成して、名前空間登録を追加できます。名前空間の同じ部分について、登録と予約の間で競合が発生します。ワイルドカードを含む名前空間クレーム間の解決順序で指定された解決順序に従って、予約が登録より優先される可能性があります。この場合、実行中のアプリケーションがクレームを受信する動作が、予約によってブロックされます。

Windows XP または Windows Server 2003 を実行している場合

名前空間予約を変更するには、httpcfg.exe set urlacl コマンドを使用します。「Httpcfg 構文」では、Httpcfg.exe ツールの構文について説明しています。名前空間の一部に対する予約権限を変更するには、管理者特権または名前空間のその部分の所有権が必要です。最初は、ローカル管理者が HTTP 名前空間全体を所有しています。

set urlacl オプションを使用する Httpcfg コマンドの構文を次に示します。

httpcfg set urlacl /u {http://URL:Port/ | https://URL:Port/} /aACL

set urlacl を使用する場合には、/u パラメーターが必要です。このパラメーターには、実行された予約のレコード キーとして動作する完全修飾 URL を含む文字列を指定します。

set urlacl を使用する場合には、/a パラメーターも必要です。このパラメーターには、SDDL (Security Descriptor Definition Language) の形式によるアクセス制御リスト (ACL) を含む文字列を指定します。

このコマンドの使用例を次に示します。

httpcfg.exe set urlacl /u http://myhost:8000/ /a "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)"

Windows Vista、Windows Server 2008 R2、または Windows 7 を実行している場合

Windows Vista、Windows Server 2008 R2、または Windows 7 を実行している場合は、Netsh.exe ツールを使用します。このコマンドの使用例を次に示します。

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

このコマンドにより、DOMAIN\ユーザー アカウントについて指定した URL 名前空間の URL 予約が追加されます。netsh コマンドの使用方法の詳細については、コマンド プロンプトで「netsh http add urlacl」と入力し、Enter キーを押してください。

IP リッスン一覧の構成

HTTP Server API は、ユーザーが URL を登録すると、IP アドレスとポートだけにバインドします。既定では、HTTP Server API は、コンピューターのすべての IP アドレスに対して、URL でポートにバインドします。その IP アドレスとポートの組み合わせにバインドしている HTTP Server API をアプリケーションが使用していない場合、競合が発生します。IP リッスン一覧によって、WCF サービスは、コンピューターの一部の IP アドレスに対してポートを使用するアプリケーションと共存できます。IP リッスン一覧にエントリがある場合、HTTP Server API は、その一覧に指定されている IP アドレスだけにバインドします。IP リッスン一覧を変更するには、管理者特権が必要です。

Windows XP または Windows Server 2003 を実行している場合

httpcfg ツールを使用して IP リッスン一覧を変更します。次に例を示します。「Httpcfg 構文」では、Httpcfg.exe ツールの構文について説明しています。

httpcfg.exe set iplisten -i 0.0.0.0:8000

Windows Vista または Windows 7 を実行している場合

netsh ツールを使用して IP リッスン一覧を変更します。次に例を示します。

netsh http add iplisten ipaddress=0.0.0.0:8000

その他の構成設定

WCF の自己ホスト型 HTTP アドレス指定は、Windows ファイアウォールに統合されていません。例外をファイアウォール構成に追加して、特定の URL を使用した着信接続を可能にする必要があります。

WsDualHttpBinding を使用すると、クライアント接続では、名前空間予約と Windows ファイアウォールに対応できる既定値が使用されます。双方向接続のクライアント ベース アドレスをカスタマイズする場合、クライアント上で HTTP 設定を行い、新しいアドレスに一致させる必要があります。

HTTP Server API には、HttpCfg からは使用できない高度な構成設定があります。この設定は、レジストリで管理され、HTTP Server API を使用するシステムで実行中のすべてのアプリケーションに適用されます。これらの設定については、「IIS 用の Http.sys レジストリ設定」を参照してください。ほとんどのユーザーは、この設定を変更する必要がありません。

Windows XP に固有の問題

IIS では、Windows XP 上でのポート共有がサポートされていません。IIS を実行していて、WCF サービスが同じポートを持つ名前空間を使用しようとすると、WCF サービスは開始に失敗します。IIS と WCF ではどちらも、既定でポート 80 が使用されます。いずれかのサービスのポート割り当てを変更するか、IP リッスン一覧を使用して、IIS で使用されていないネットワーク アダプターに WCF サービスを割り当てます。IIS 6.0 以上では、HTTP Server API を使用できるように設計が変更されています。

参照

処理手順

方法 : SSL 証明書を使用してポートを構成する

リファレンス

WsDualHttpBinding