HTTP および HTTPS の構成

HTTP を経由した Windows Communication Foundation (WCF) を使用する場合、インターネット インフォメーション サービス (IIS) などのホストの使用、または HTTP Server API による HTTP 設定の手動構成が必要です。ここでは、HTTP と HTTPS を使用するときに手動で WCF を構成する方法について説明します。

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

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

Windows Vista では、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 Vista を実行している場合は、代わりに Netsh.exe ツールを使用します。このコマンドの使用例を次に示します。

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

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 を実行している場合

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