Postupy: Konfigurace služby WCF hostované v IIS se SSL

Toto téma popisuje, jak nastavit službu WCF hostované službou IIS tak, aby používala zabezpečení přenosu HTTP. Zabezpečení přenosu HTTP vyžaduje registraci certifikátu SSL ve službě IIS. Pokud nemáte certifikát SSL, můžete použít službu IIS k vygenerování testovacího certifikátu. Dále musíte přidat vazbu SSL na web a nakonfigurovat vlastnosti ověřování webu. Nakonec musíte nakonfigurovat službu WCF tak, aby používala protokol HTTPS.

Vytvoření certifikátu podepsaného svým držitelem

  1. Otevřete Internetová informační služba Manager (inetmgr.exe) a v zobrazení stromu vlevo vyberte název počítače. Na pravé straně obrazovky vyberte Certifikáty serveru.

    IIS Manager Home Screen

  2. V okně Certifikáty serveru klikněte na odkaz Vytvořit certifikát podepsaný svým držitelem....

    Creating a self-signed certificate with IIS

  3. Zadejte popisný název certifikátu podepsaného svým držitelem a klikněte na OK.

    Create Self-Signed Certificate Dialog

    Nově vytvořené podrobnosti certifikátu podepsaného svým držitelem se teď zobrazují v okně Certifikáty serveru.

    Server Certificate Window

    Vygenerovaný certifikát je nainstalován v úložišti důvěryhodných kořenových certifikačních autorit.

Přidání vazby SSL

  1. Stále ve správci Internetová informační služba rozbalte složku Weby a potom složku Výchozí web ve stromovém zobrazení na levé straně obrazovky.

  2. Klikněte na Vazby.... Odkaz v části Akce v pravé horní části okna.

    Adding an SSL binding

  3. V okně Vazby webu klikněte na tlačítko Přidat .

    Site Bindings Dialog

  4. V dialogovém okně Přidat vazbu webu vyberte pro typ https a popisný název certifikátu podepsaného svým držitelem, který jste právě vytvořili.

    Site binding example

Konfigurace virtuálního adresáře pro SSL

  1. Stále ve správci Internetová informační služba vyberte virtuální adresář, který obsahuje vaši zabezpečenou službu WCF.

  2. V prostředním podokně okna vyberte v části IIS Nastavení SSL.

    SSL Settings for virtual directory

  3. V podokně Nastavení SSL zaškrtněte políčko Vyžadovat SSL a klikněte na odkaz Použít v části Akce na pravé straně obrazovky.

    Virtual directory SSL settings

Konfigurace služby WCF pro zabezpečení přenosu PROTOKOLU HTTP

  1. V souboru web.config služby WCF nakonfigurujte vazbu HTTP tak, aby používala zabezpečení přenosu, jak je znázorněno v následujícím kódu XML.

    <bindings>  
          <basicHttpBinding>  
            <binding name="secureHttpBinding">  
              <security mode="Transport">  
                <transport clientCredentialType="None"/>  
              </security>  
            </binding>  
          </basicHttpBinding>  
    </bindings>  
    
  2. Zadejte svůj koncový bod služby a služby, jak je znázorněno v následujícím kódu XML.

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

Příklad

Následuje úplný příklad souboru web.config pro službu WCF používající zabezpečení přenosu HTTP.

<?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>  

Viz také