Udostępnij za pośrednictwem


Instrukcje: konfigurowanie usługi WCF hostowanej przez Internetowe usługi informacyjne za pomocą protokołu SSL

W tym temacie opisano sposób konfigurowania usługi WCF hostowanej przez usługi IIS w celu korzystania z zabezpieczeń transportu HTTP. Zabezpieczenia transportu HTTP wymagają zarejestrowania certyfikatu SSL w usługach IIS. Jeśli nie masz certyfikatu SSL, możesz użyć usług IIS do wygenerowania certyfikatu testowego. Następnie należy dodać powiązanie SSL do witryny sieci Web i skonfigurować właściwości uwierzytelniania witryny sieci Web. Na koniec należy skonfigurować usługę WCF do korzystania z protokołu HTTPS.

Tworzenie certyfikatu z podpisem własnym

  1. Otwórz Program Internet Information Services Manager (inetmgr.exe) i wybierz nazwę komputera w widoku drzewa po lewej stronie. Po prawej stronie ekranu wybierz pozycję Certyfikaty serwera

    IIS Manager Home Screen

  2. W oknie Certyfikaty serwera kliknij link Utwórz certyfikat z podpisem własnym.... .

    Creating a self-signed certificate with IIS

  3. Wprowadź przyjazną nazwę certyfikatu z podpisem własnym i kliknij przycisk OK.

    Create Self-Signed Certificate Dialog

    Nowo utworzone szczegóły certyfikatu z podpisem własnym są teraz wyświetlane w oknie Certyfikaty serwera.

    Server Certificate Window

    Wygenerowany certyfikat jest instalowany w magazynie zaufanych głównych urzędów certyfikacji.

Dodawanie powiązania SSL

  1. Nadal w Menedżerze internetowych usług informacyjnych rozwiń folder Witryny , a następnie folder Domyślna witryna sieci Web w widoku drzewa po lewej stronie ekranu.

  2. Kliknij link Powiązania.... w sekcji Akcje w prawej górnej części okna.

    Adding an SSL binding

  3. W oknie Powiązania witryny kliknij przycisk Dodaj .

    Site Bindings Dialog

  4. W oknie dialogowym Dodawanie powiązania witryny wybierz wartość https dla typu i przyjazną nazwę właśnie utworzonego certyfikatu z podpisem własnym.

    Site binding example

Konfigurowanie katalogu wirtualnego dla protokołu SSL

  1. Nadal w Menedżerze usług Internet Information Services wybierz katalog wirtualny zawierający bezpieczną usługę WCF.

  2. W środkowym okienku okna wybierz pozycję SSL Ustawienia w sekcji IIS.

    SSL Settings for virtual directory

  3. W okienku Ustawienia SSL zaznacz pole wyboru Wymagaj protokołu SSL i kliknij link Zastosuj w sekcji Akcje po prawej stronie ekranu.

    Virtual directory SSL settings

Konfigurowanie usługi WCF na potrzeby zabezpieczeń transportu HTTP

  1. W pliku web.config usługi WCF skonfiguruj powiązanie HTTP w celu korzystania z zabezpieczeń transportu, jak pokazano w poniższym kodzie XML.

    <bindings>  
          <basicHttpBinding>  
            <binding name="secureHttpBinding">  
              <security mode="Transport">  
                <transport clientCredentialType="None"/>  
              </security>  
            </binding>  
          </basicHttpBinding>  
    </bindings>  
    
  2. Określ usługę i punkt końcowy usługi, jak pokazano w poniższym pliku XML.

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

Przykład

Poniżej przedstawiono kompletny przykład pliku web.config dla usługi WCF przy użyciu zabezpieczeń transportu 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>  

Zobacz też