Vorgehensweise: Konfigurieren eines IIS-gehosteten WCF-Diensts mit SSL

In diesem Thema wird beschrieben, wie ein von IIS gehosteter WCF-Dienst für die Verwendung der HTTP-Transportsicherheit eingerichtet wird. Die HTTP-Transportsicherheit erfordert für die Registrierung bei IIS ein SSL-Zertifikat. Wenn Sie über kein SSL-Zertifikat verfügen, können Sie mit IIS ein Testzertifikat generieren. Danach müssen Sie der Website eine SSL-Bindung hinzufügen und die Authentifizierungseigenschaften der Website konfigurieren. Abschließend müssen Sie den WCF-Dienst für die Verwendung von HTTPS konfigurieren.

Erstellen eines selbstsignierten Zertifikats

  1. Öffnen Sie den Internetinformationsdienste-Manager (inetmgr.exe), und wählen Sie in der linken Strukturansicht den Computernamen aus. Wählen Sie auf der rechten Seite des Bildschirms Serverzertifikate aus.

    Hauptbildschirm von IIS-Manager

  2. Klicken Sie im Fenster Serverzertifikate auf den Link Selbstsigniertes Zertifikat erstellen.

    Erstellen eines selbstsignierten Zertifikats mit IIS

  3. Geben Sie einen Anzeigenamen für das selbstsignierte Zertifikat ein, und klicken Sie auf OK.

    Dialogfeld "Selbstsigniertes Zertifikat erstellen"

    Die Details des neu erstellten selbstsignierten Zertifikats werden jetzt im Fenster Serverzertifikate angezeigt.

    Fenster "Serverzertifikat"

    Das generierte Zertifikat wird im Speicher für vertrauenswürdige Stammzertifizierungsstellen installiert.

Hinzufügen einer SSL-Bindung

  1. Erweitern Sie im Internetinformationsdienste-Manager in der Strukturansicht auf der linken Seite des Bildschirms den Ordner Sites und dann den Ordner Standardwebsite.

  2. Klicken Sie im rechten oberen Bereich des Fensters auf den Link Bindungen im Abschnitt Aktionen.

    Hinzufügen einer SSL-Bindung

  3. Klicken Sie im Fenster Websitebindungen auf die Schaltfläche Hinzufügen.

    Dialogfeld "Sitebindungen"

  4. Wählen Sie im Dialogfeld Sitebindung hinzufügen HTTPS für den Typ und den Anzeigenamen des selbstsignierten Zertifikats aus, das Sie gerade erstellt haben.

    Beispiel für Sitebindung

Konfigurieren eines virtuellen Verzeichnisses für SSL

  1. Wählen Sie im Internetinformationsdienste-Manager das virtuelle Verzeichnis aus, das den sicheren WCF-Dienst enthält.

  2. Wählen Sie im mittleren Bereich des Fensters im IIS-Abschnitt SSL-Einstellungen aus.

    SSL-Einstellungen für virtuelles Verzeichnis

  3. Aktivieren Sie im Bereich SSL-Einstellungen das Kontrollkästchen SSL erforderlich, und klicken Sie auf der rechten Seite des Bildschirms im Abschnitt Aktionen auf den Link Anwenden.

    SSL-Einstellungen für virtuelles Verzeichnis

Konfigurieren des WCF-Dienstes für HTTP-Transportsicherheit

  1. Konfigurieren Sie in der Datei web.config des WCF-Diensts die HTTP-Bindung für die Verwendung der Transportsicherheit, wie im folgenden XML-Code dargestellt.

    <bindings>  
          <basicHttpBinding>  
            <binding name="secureHttpBinding">  
              <security mode="Transport">  
                <transport clientCredentialType="None"/>  
              </security>  
            </binding>  
          </basicHttpBinding>  
        </bindings>  
    
  2. Geben Sie den Dienst und Dienstendpunkt an, wie im folgenden XML-Code gezeigt.

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

Beispiel

Im Folgenden finden Sie ein vollständiges Beispiel für die Datei web.config eines WCF-Diensts, der HTTP-Transportsicherheit verwendet.

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

Siehe auch

Hosten in Internetinformationsdiensten
Hostinganweisungen des Internetinformationsdiensts
Empfohlene Vorgehensweisen für das Hosten in Internetinformationsdiensten
IIS-Hosting mithilfe von Inlinecode