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

トランスポート セキュリティを使用する自己ホスト型 Windows Communication Foundation (WCF) サービスを WSHttpBinding クラスを使って作成する場合は、X.509 証明書でポートを構成する作業も必要になります。自己ホスト型サービスを作成するのでなければ、Internet Information Services (IIS) でサービスをホストできます。詳細な情報については、次のページを参照してください。 「HTTP トランスポート セキュリティ」を参照してください。

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

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

Windows Vista を実行している場合は、Netsh.exe ツールを使用します。これは既にインストールされています。

このトピックでは、次のようなさまざまな手順を実行する方法について説明します。

  • コンピュータの現在のポート構成を確認する。
  • 証明書のサムプリントを取得する (次の 2 つの手順に必要)。
  • SSL 証明書をポート構成にバインドする。
  • SSL 証明書をポート構成にバインドし、クライアント証明書をサポートする。
  • ポート番号から SSL 証明書を削除する。

コンピュータに格納されている証明書を変更するには、管理者特権が必要です。

ポートの構成を確認するには

  1. Windows Server 2003 または Windows XP で現在のポート構成を表示するには、HttpCfg.exe ツールを使用します。次の例に示すように、query スイッチと ssl スイッチを使用します。

    httpcfg query ssl
    
  2. Windows Vista で現在のポート構成を表示するには、Netsh.exe ツールを使用します。次に例を示します。

    netsh http show sslcert
    

証明書のサムプリントを取得するには

  1. 証明書 MMC スナップインを使用して、クライアント認証を目的として含む X.509 証明書を検索します。詳細な情報については、次のページを参照してください。 「方法 : MMC スナップインを使用して証明書を参照する」を参照してください。

  2. 証明書のサムプリントにアクセスします。詳細な情報については、次のページを参照してください。 「方法 : 証明書のサムプリントを取得する」を参照してください。

  3. 証明書のサムプリントを、メモ帳などのテキスト エディタにコピーします。

  4. 16 進文字の間にある空白をすべて削除します。たとえばエディタの "すべて置換" 機能を使用して、空白を空文字列に置き換えるとよいでしょう。

SSL 証明書をポート番号にバインドするには

  1. Windows Server 2003 または Windows XP で証明書をポート番号にバインドするには、HttpCfg.exe ツールを SSL (Secure Sockets Layer) ストアに対して "set" モードで使用します。このツールは、次のように、サムプリントを使用して証明書を識別します。

    httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
    
    • -i スイッチには、IP:port という構文を使用します。上の例では、コンピュータのポート 8012 に証明書を設定するようにツールに対して指示しています。"0.0.0.0" の部分は、必要に応じて、コンピュータの実際の IP アドレスに置き換えてください。
    • -h スイッチは、証明書のサムプリントを指定します。
  2. Windows Vista では、Netsh.exe ツールを使用します。次に例を示します。

    netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} 
    
    • certhash パラメータは、証明書のサムプリントを指定します。
    • ipport パラメータは、IP アドレスとポートを指定します。このパラメータは、既に説明した Httpcfg.exe ツールの -i スイッチと同じように機能します。
    • appid パラメータは、所有するアプリケーションの識別に使用できる GUID です。

SSL 証明書をポート番号にバインドし、クライアント証明書をサポートするには

  1. Windows Server 2003 または Windows XP では、トランスポート層で X.509 証明書を使用して認証するクライアントをサポートするには、前と同じ手順を実行しますが、次のように HttpCfg.exe に追加のコマンド ライン パラメータを指定します。

    httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 -f 2
    

    -f スイッチには、n という書式のパラメータを指定します。n は 1 ~ 7 の数字を表します。前の例のように 2 を指定すると、クライアントはトランスポート層で認証することになります。値として 3 を指定すると、クライアント証明書が有効になり、それらの証明書が Windows アカウントに対応付けられます。他の値については、HttpCfg.exe のヘルプ機能を参照してください。

  2. Windows Vista では、トランスポート層で X.509 証明書を使用して認証するクライアントをサポートするには、前と同じ手順を実行しますが、次のように追加のパラメータを指定します。

    netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable
    

ポート番号から SSL 証明書を削除するには

  1. HttpCfg.exe または Netsh.exe ツールを使用して、コンピュータ上のすべてのバインディングのポートとサムプリントを確認します。情報をディスクに出力するには、次の例のように ">" を使用してリダイレクトします。

    httpcfg query ssl>myMachinePorts.txt
    
  2. Windows Server 2003 または Windows XP では、HttpCfg.exe ツールを delete および ssl の各キーワードと共に使用します。-i スイッチで IP:port 番号を、-h スイッチでサムプリントを指定します。

    httpcfg delete ssl -i 0.0.0.0:8005 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
    
  3. Windows Vista では、Netsh.exe ツールを使用します。次に例を示します。

    Netsh http delete sslcert ipport=0.0.0.0:8005
    

次のコードは、トランスポート セキュリティを設定した WSHttpBinding クラスを使用して、自己ホスト型サービスを作成する方法を示します。アプリケーションを作成する際、アドレス中にポート番号を指定してください。

関連項目

概念

HTTP トランスポート セキュリティ