Partilhar via


Como: Configurar um serviço WCF hospedado no IIS com SSL

Este tópico descreve como configurar um serviço WCF hospedado no IIS para usar a segurança de transporte HTTP. A segurança de transporte HTTP requer um certificado SSL para ser registrado no IIS. Se você não tiver um certificado SSL, poderá usar o IIS para gerar um certificado de teste. Em seguida, você deve adicionar uma associação SSL ao site e configurar as propriedades de autenticação do site. Finalmente, você precisa configurar o serviço WCF para usar HTTPS.

Criando um certificado autoassinado

  1. Abra o Gerenciador dos Serviços de Informações da Internet (inetmgr.exe) e selecione o nome do computador na exibição de árvore à esquerda. No lado direito da tela, selecione Certificados do servidor

    IIS Manager Home Screen

  2. Na janela Certificados do servidor, clique no link Criar certificado autoassinado....

    Creating a self-signed certificate with IIS

  3. Insira um nome amigável para o certificado autoassinado e clique em OK.

    Create Self-Signed Certificate Dialog

    Os detalhes do certificado autoassinado recém-criado agora são mostrados na janela Certificados do servidor.

    Server Certificate Window

    O certificado gerado é instalado no armazenamento de Autoridades de Certificação Raiz Confiáveis.

Adicionar vinculação SSL

  1. Ainda no Gerenciador dos Serviços de Informações da Internet, expanda a pasta Sites e, em seguida, a pasta Site Padrão no modo de exibição em árvore no lado esquerdo da tela.

  2. Clique no botão Ligações.... Link na seção Ações na parte superior direita da janela.

    Adding an SSL binding

  3. Na janela Ligações de Site, clique no botão Adicionar .

    Site Bindings Dialog

  4. Na caixa de diálogo Adicionar Vinculação de Site, selecione https para o tipo e o nome amigável do certificado autoassinado que você acabou de criar.

    Site binding example

Configurar o diretório virtual para SSL

  1. Ainda no Gerenciador dos Serviços de Informações da Internet, selecione o diretório virtual que contém o serviço seguro do WCF.

  2. No painel central da janela, selecione Configurações de SSL na seção IIS.

    SSL Settings for virtual directory

  3. No painel Configurações de SSL, marque a caixa de seleção Exigir SSL e clique no link Aplicar na seção Ações no lado direito da tela.

    Virtual directory SSL settings

Configurar o Serviço WCF para Segurança de Transporte HTTP

  1. No web.config do serviço WCF, configure a ligação HTTP para usar a segurança de transporte, conforme mostrado no XML a seguir.

    <bindings>  
          <basicHttpBinding>  
            <binding name="secureHttpBinding">  
              <security mode="Transport">  
                <transport clientCredentialType="None"/>  
              </security>  
            </binding>  
          </basicHttpBinding>  
    </bindings>  
    
  2. Especifique seu serviço e ponto de extremidade de serviço conforme mostrado no XML a seguir.

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

Exemplo

A seguir está um exemplo completo de um arquivo web.config para um serviço WCF usando segurança de transporte 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>  

Consulte também