方法: IIS でホストされる WCF サービスに SSL を構成するHow to: Configure an IIS-hosted WCF service with SSL

ここでは、HTTP トランスポート セキュリティを使用するように IIS でホストされる WCF サービスをセットアップする方法について説明します。This topic describes how to set up an IIS-hosted WCF service to use HTTP transport security. HTTP トランスポート セキュリティを使用するには、SSL 証明書が IIS に登録されている必要があります。HTTP transport security requires an SSL certificate to be registered with IIS. SSL 証明書がない場合は、IIS を使用してテスト証明書を生成できます。If you do not have an SSL certificate you can use IIS to generate a test certificate. 次に、Web サイトに SSL バインディングを追加し、Web サイトの認証プロパティを構成する必要があります。Next you must add an SSL binding to the web site and configure the web site’s authentication properties. 最後に、HTTPS を使用するように WCF サービスを構成する必要があります。Finally you need to configure the WCF service to use HTTPS.

自己署名証明書の作成Creating a Self-Signed Certificate

  1. インターネット インフォメーション サービス マネージャー (inetmgr.exe) を開き、左側のツリー ビューでコンピューター名を選択します。Open Internet Information Services Manager (inetmgr.exe), and select your computer name in the left-hand tree view. 画面の右側で [サーバー証明書] を選択します。On the right-hand side of the screen select Server Certificates

    IIS マネージャーのホーム画面IIS Manager Home Screen

  2. サーバー証明書 ウィンドウで、自己署名証明書を作成しています.In the Server Certificates window click the Create Self-Signed Certificate…. リンクをクリックします。Link.

    自動作成-署名入り証明書を IIS にCreating a self-signed certificate with IIS

  3. 自己署名証明書のフレンドリ名を入力し、クリックしてOKします。Enter a friendly name for the self-signed certificate and click OK.

    作成自己-署名証明書ダイアログCreate Self-Signed Certificate Dialog

    新しく作成された自己署名証明書の詳細はここで示した、サーバー証明書ウィンドウ。The newly created self-signed certificate details are now shown in the Server Certificates window.

    サーバー証明書 ウィンドウServer Certificate Window

    生成された証明書が、信頼されたルート証明機関ストアにインストールされます。The generated certificate is installed in the Trusted Root Certification Authorities store.

SSL バインドの追加Add SSL Binding

  1. インターネット インフォメーション サービス マネージャーでも、展開、サイトフォルダーをクリックし、既定の Web サイト画面の左側にあるツリー ビュー内のフォルダー。Still in Internet Information Services Manager, expand the Sites folder and then the Default Web Site folder in the tree view on the left-hand side of the screen.

  2. をクリックして、バインドしています.Click the Bindings…. 内のリンク、アクションウィンドウの右上部分でセクション。Link in the Actions section in the upper right hand portion of the window.

    SSL バインドの追加Adding an SSL binding

  3. サイト バインド ウィンドウで、追加ボタンをクリックします。In the Site Bindings window click the Add button.

    サイト バインド ダイアログ ボックスSite Bindings Dialog

  4. サイト バインドの追加ダイアログ ボックスで、型とした自己署名証明書のフレンドリ名に対する https の選択を作成します。In the Add Site Binding dialog, select https for the type and the friendly name of the self-signed certificate you just created.

    サイト バインドの例Site binding example

SSL の仮想ディレクトリの構成Configure Virtual Directory for SSL

  1. インターネット インフォメーション サービス マネージャーで、WCF のセキュリティで保護されたサービスが含まれている仮想ディレクトリを選択します。Still in Internet Information Services Manager, select the virtual directory that contains your WCF secure service.

  2. ウィンドウの中央のウィンドウで次のように選択します。 SSL 設定IIS セクションでします。In the center pane of the window, select SSL Settings in the IIS section.

    仮想ディレクトリの SSL 設定SSL Settings for virtual directory

  3. SSL 設定 ウィンドウで、選択、 SSL が必要チェック ボックスをオン をクリックし、適用のリンクをアクション画面の右側にあるセクション。In the SSL Settings pane, select the Require SSL checkbox and click the Apply link in the Actions section on the right hand side of the screen.

    仮想ディレクトリの SSL 設定Virtual directory SSL settings

HTTP トランスポート セキュリティのための WCF サービスの構成Configure WCF Service for HTTP Transport Security

  1. WCF サービスの Web.config で、次の XML に示すように、トランスポート セキュリティを使用するよう HTTP バインドを構成します。In the WCF service’s web.config configure the HTTP binding to use transport security as shown in the following XML.

    <bindings>  
          <basicHttpBinding>  
            <binding name="secureHttpBinding">  
              <security mode="Transport">  
                <transport clientCredentialType="None"/>  
              </security>  
            </binding>  
          </basicHttpBinding>  
    </bindings>  
    
  2. 次の XML に示すように、サービスとサービス エンドポイントを指定します。Specify your service and service endpoint as shown in the following XML.

    <services>  
          <service name="MySecureWCFService.Service1">  
            <endpoint address=""  
                      binding="basicHttpBinding"  
                      bindingConfiguration="secureHttpBinding"  
                      contract="MySecureWCFService.IService1"/>  
    
            <endpoint address="mex"  
                      binding="mexHttpsBinding"  
                      contract="IMetadataExchange" />  
          </service>  
    </services>  
    

Example

次は、HTTP トランスポート セキュリティを使用した WCF サービスの web.config ファイルの詳細な例です。The following is a complete example of a web.config file for a WCF service using HTTP transport security

<?xml version="1.0"?>  
<configuration>  
  
  <system.web>  
    <compilation debug="true" targetFramework="4.0" />  
  </system.web>  
  <system.serviceModel>  
    <services>  
      <service name="MySecureWCFService.Service1">  
        <endpoint address=""  
                  binding="basicHttpBinding"  
                  bindingConfiguration="secureHttpBinding"  
                  contract="MySecureWCFService.IService1"/>  
  
        <endpoint address="mex"  
                  binding="mexHttpsBinding"  
                  contract="IMetadataExchange" />  
      </service>  
    </services>  
    <bindings>  
      <basicHttpBinding>  
        <binding name="secureHttpBinding">  
          <security mode="Transport">  
            <transport clientCredentialType="None"/>  
          </security>  
        </binding>  
      </basicHttpBinding>  
    </bindings>  
    <behaviors>  
      <serviceBehaviors>  
        <behavior>  
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->  
          <serviceMetadata httpsGetEnabled="true"/>  
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->  
          <serviceDebug includeExceptionDetailInFaults="false"/>  
        </behavior>  
      </serviceBehaviors>  
    </behaviors>  
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />  
  </system.serviceModel>  
  <system.webServer>  
    <modules runAllManagedModulesForAllRequests="true"/>  
  </system.webServer>  
  
</configuration>  

関連項目See also