Compartilhar via


FTP padrão em configurações de SSL <ssl>

Visão geral

O elemento <ssl> especifica as configurações de FTP sobre protocolo SSL para o serviço FTP; o FTP sobre SSL foi introduzido pela primeira vez para o IIS 7 no FTP 7.0.

Ao contrário do uso de HTTP via SSL, que requer uma porta separada e uma conexão para comunicação segura (HTTPS), a comunicação FTP segura ocorre na mesma porta que a comunicação não segura. O FTP 7 dá suporte a duas formas diferentes de FTP sobre SSL:

  • FTPS Explícito: por padrão, os clientes e sites FTP usam a porta 21 para o canal de controle e o servidor e o cliente negociam portas secundárias para conexões de canal de dados. Em uma solicitação FTP típica, um cliente FTP se conectará a um site FTP pelo canal de controle e, em seguida, o cliente poderá negociar SSL/TLS com o servidor para o canal de controle ou o canal de dados. Ao usar o FTP 7, você estará usando o SSL Explícito se habilitar o FTPS e atribuir o site FTP a qualquer porta que não seja a porta 990.
  • FTPS Implícito: o FTPS implícito é uma forma mais antiga de FTP sobre SSL que ainda tem suporte no FTP 7. Com o FTPS Implícito, um handshake do SSL deve ser negociado antes que qualquer comando FTP possa ser enviado pelo cliente. Além disso, embora o FTPS Explícito permita que o cliente decida arbitrariamente se deve usar o SSL, o FTPS Implícito requer que toda a sessão FTP seja criptografada. Ao usar o FTP 7, você usará o SSL Implícito se habilitar o FTPS e atribuir o site FTP à porta 990.

Dependendo das opções de segurança configuradas nos atributos controlChannelPolicy e dataChannelPolicy, um cliente FTP pode alternar entre seguro e não seguro várias vezes em uma única sessão de FTPS Explícito. Há várias maneiras de implementar isso, dependendo de suas necessidades comerciais:

controlChannelPolicy dataChannelPolicy Observações
SslAllow SslAllow Essa configuração permite que o cliente decida se qualquer parte da sessão FTP deve ser criptografada.
SslRequireCredentialsOnly SslAllow Essa configuração protege suas credenciais de cliente FTP contra escutas eletrônicas e permite que o cliente decida se as transferências de dados devem ser criptografadas.
SslRequireCredentialsOnly SslRequire Essa configuração requer que as credenciais do cliente sejam seguras e, em seguida, permite que o cliente decida se os comandos FTP devem ser criptografados. No entanto, todas as transferências de dados devem ser criptografadas.
SslRequire SslRequire Esta configuração é a mais segura: o cliente deve negociar o SSL usando os comandos relacionados ao FTPS antes que outros comandos FTP sejam permitidos e todas as transferências de dados devem ser criptografadas.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <ssl> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <ssl> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <ssl> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <ssl> do elemento <security> é fornecido como um recurso do IIS 7.5.
IIS 7.0 O elemento <ssl> do elemento <security> foi introduzido no FTP 7.0, que era um download separado para o IIS 7.0.
IIS 6,0 O serviço FTP no IIS 6.0 não dava suporte a FTP sobre SSL.

Observação

Os serviços FTP 7.0 e FTP 7.5 eram fornecidos fora de banda para o IIS 7.0, o que exigia o download e a instalação de módulos do seguinte URL:

https://www.iis.net/expand/FTP

Com o Windows 7 e o Windows Server 2008 R2, o serviço FTP 7.5 é fornecido como um recurso para o IIS 7.5 e, portanto, o download do serviço FTP não é mais necessário.

Instalação

Para dar suporte à publicação FTP para seu servidor Web, você deve instalar o serviço FTP. Para fazer isso, execute as etapas a seguir.

Windows Server 2012 R2 ou Windows Server 2012

  1. Na barra de tarefas, clique em Gerenciador do Servidor.

  2. No Gerenciador do Servidor, clique no menu Gerenciar e clique em Adicionar Funções e Recursos.

  3. No assistente Adicionar Funções e Recursos, clique em Avançar. Selecione o tipo de instalação e clique em Avançar. Selecione o servidor de destino e clique em Avançar.

  4. Na página Funções de servidor, expanda Servidor Web (IIS) e, em seguida, selecione Servidor FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você precisará selecionar a Extensibilidade de FTP além do Serviço FTP.
    Screenshot that shows F T P Extensibility selected for Windows Server 2012. .

  5. Selecione Avançar e, em seguida, na página Selecionar recursos, selecione Avançar novamente.

  6. Na página Confirmar seleções de instalação, clique em Instalar.

  7. Na página Resultados , clique em Fechar.

Windows 8 ou Windows 8.1

  1. Na tela Iniciar, mova o ponteiro até o canto inferior esquerdo, clique com o botão direito do mouse no botão Iniciar e clique em Painel de Controle.

  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar recursos do Windows.

  3. Expanda Serviços de Informações da Internet e selecione Servidor FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot that shows F T P Extensibility selected for Windows 8.

  4. Clique em OK.

  5. Clique em Fechar.

Windows Server 2008 R2

  1. Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador do Servidor.

  2. No painel de hierarquia do Gerenciador do Servidor, expanda Funções e clique em Servidor Web (IIS).

  3. No painel Servidor Web (IIS), role até a seção Serviços de Função e clique em Adicionar Serviços de Função.

  4. Na página Selecionar Serviços de Função do Assistente para Adicionar Serviços de Função, expanda Servidor FTP.

  5. Selecione Serviço FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot that shows F T P Service and Extensibility selected for Windows Server 2008.

  6. Clique em Avançar.

  7. Na página Confirmar Seleções de Instalação, clique em Instalar.

  8. Na página Resultados , clique em Fechar.

Windows 7

  1. Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.

  2. Em Painel de Controle, clique em Programas e Recursos e clique em Ativar ou desativar Recursos do Windows.

  3. Expanda Serviços de Informações da Internet e, em seguida, Servidor FTP.

  4. Selecione Serviço FTP.

    Observação

    Para dar suporte à autenticação do ASP.Membership ou do Gerenciador do IIS para o serviço FTP, você também precisará selecionar Extensibilidade de FTP.
    Screenshot that shows F T P Extensibility selected for Windows 7.

  5. Clique em OK.

Windows Server 2008 ou Windows Vista

  1. Baixe o pacote de instalação do seguinte URL:

  2. Siga as instruções no seguinte passo a passo para instalar o serviço FTP:

Instruções

Como configurar as opções padrão de SSL em log para um servidor FTP

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, clique no nome do servidor.

  3. No painel Página Inicial do servidor, clique duas vezes no recurso Configurações de SSL do FTP.
    Screenshot that shows F T P S S L Settings selected.

  4. Na lista Certificado SSL, selecione o certificado que deseja usar para conexões com o servidor FTP.
    Screenshot that shows the F T P S S L Settings pane. Allow S S L connections is selected.

  5. Em Política SSL, selecione uma das seguintes opções:

    • Permitir conexões SSL: permite que o servidor FTP dê suporte a conexões SSL e não SSL com um cliente.

    • Exigir conexões SSL: requer criptografia SSL para a comunicação entre o servidor FTP e um cliente.

    • Personalizado: permite configurar uma política de criptografia SSL diferente para o canal de controle e o canal de dados. Se você escolher essa opção, clique no botão Avançado.... Quando a caixa de diálogo Política SSL Avançada for aberta, selecione as seguintes opções:

      • Em Canal de Controle, selecione uma das seguintes opções para criptografia SSL no canal de controle:

        • Permitir: especifica que o SSL é permitido para o canal de controle; um cliente FTP pode usar o SSL para o canal de controle, mas não é necessário.
        • Exigir: especifica que o SSL é necessário para o canal de controle; um cliente FTP não pode mudar para um modo de comunicação não seguro para o canal de controle.
        • Exigir apenas para credenciais: especifica que somente as credenciais do usuário precisam ser enviadas sobre a sessão SSL; um cliente FTP deve usar o SSL para seu nome de usuário e senha, mas o cliente não é obrigado a usar o SSL para o canal de controle depois de fazer logon.
      • Em Canal de Dados, selecione uma das seguintes opções para criptografia SSL no canal de dados:

        • Permitir: SSL é permitido para o canal de dados; um cliente FTP pode usar o SSL para o canal de dados, mas não é necessário.
        • Exigir: o SSL é necessário para o canal de dados; um cliente FTP não pode mudar para um modo de comunicação não seguro para o canal de dados.
        • Negar: o SSL é negado para o canal de dados; um cliente FTP não pode usar o SSL para o canal de dados.
      • Clique em OK para fechar a caixa de diálogo Política SSL Avançada.

  6. No painel Ações, clique em Aplicar.

Configuração

Atributos

Atributo Descrição
controlChannelPolicy Atributo de enumeração opcional.

Especifica a política SSL para o canal de controle FTP.

Observação: não há nenhum valor de enumeração que negue o SSL para o canal de comando; para negar o SSL, não associe um certificado SSL ao site FTP especificando um hash de certificado no atributo serverCertHash.
Valor Descrição
SslAllow Especifica que o SSL é permitido para o canal de controle.

O valor numérico é 0.
SslRequire Especifica que o SSL é necessário para o canal de controle.

O valor numérico é 1.
SslRequireCredentialsOnly Especifica que somente os comandos "USER" e "PASS" precisam ser enviados pela sessão SSL. Depois que um cliente FTP fizer logon, o cliente poderá alternar para um modo não seguro.

O valor numérico é 2.
O valor padrão é SslRequire.
dataChannelPolicy Atributo de enumeração opcional.

Especifica a política SSL para o canal de dados FTP.
Valor Descrição
SslAllow Especifica que o SSL é permitido para o canal de dados.

O valor numérico é 0.
SslRequire Especifica que o SSL é necessário para o canal de dados.

O valor numérico é 1.
SslDeny Especifica que o SSL é negado para o canal de dados.

O valor numérico é 2.
O valor padrão é SslRequire.
serverCertHash Atributo de cadeia de caracteres opcional.

Especifica o hash de impressão digital para o certificado do lado do servidor a ser usado para conexões SSL.

Nenhum valor padrão.
serverCertStoreName Atributo de cadeia de caracteres opcional.

Especifica o repositório de certificados para certificados SSL do servidor.

O valor padrão é MY.
ssl128 Atributo Boolean opcional.

Especifica se o SSL de 128 bits é necessário.

O valor padrão é false.

Elementos filho

Nenhum.

Exemplo de configuração

O exemplo de configuração a seguir explica como habilitar o acesso SSL no canal de controle e no canal de dados do serviço FTP por padrão.

Exemplo de configuração SSL (temp desc).

<siteDefaults>
   <ftpServer>
      <security>
         <ssl controlChannelPolicy="SslAllow" dataChannelPolicy="SslAllow" serverCertHash="57686f6120447564652c2049495320526f636b73"/>
      </security>
   </ftpServer>
</siteDefaults>

Exemplo de código

Os exemplos a seguir explicam como habilitar o acesso SSL no canal de controle e no canal de dados do serviço FTP por padrão.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.ftpServer.security.ssl.controlChannelPolicy:"SslAllow" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.ftpServer.security.ssl.dataChannelPolicy:"SslAllow" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.ftpServer.security.ssl.serverCertHash:"57686f6120447564652c2049495320526f636b73" /commit:apphost

Observação

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
         ConfigurationElement siteDefaultsElement = sitesSection.GetChildElement("siteDefaults");
         ConfigurationElement ftpServerElement = siteDefaultsElement.GetChildElement("ftpServer");

         ConfigurationElement securityElement = ftpServerElement.GetChildElement("security");
         ConfigurationElement sslElement = securityElement.GetChildElement("ssl");
            sslElement["controlChannelPolicy"] = @"SslAllow";
            sslElement["dataChannelPolicy"] = @"SslAllow";
            sslElement["serverCertHash"] = "57686f6120447564652c2049495320526f636b73";

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
      Dim siteDefaultsElement As ConfigurationElement = sitesSection.GetChildElement("siteDefaults")
      Dim ftpServerElement As ConfigurationElement = siteDefaultsElement.GetChildElement("ftpServer")

      Dim securityElement As ConfigurationElement = ftpServerElement.GetChildElement("security")
      Dim sslElement As ConfigurationElement = securityElement.GetChildElement("ssl")
         sslElement("controlChannelPolicy") = "SslAllow"
         sslElement("dataChannelPolicy") = "SslAllow"
         sslElement("serverCertHash") = "57686f6120447564652c2049495320526f636b73"
      
      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults");
var ftpServerElement = siteDefaultsElement.ChildElements.Item("ftpServer");

var securityElement = ftpServerElement.ChildElements.Item("security");
var sslElement = securityElement.ChildElements.Item("ssl");
   sslElement.Properties.Item("controlChannelPolicy").Value = "SslAllow";
   sslElement.Properties.Item("dataChannelPolicy").Value = "SslAllow";
   sslElement.Properties.Item("serverCertHash").Value = "57686f6120447564652c2049495320526f636b73";

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults")
Set ftpServerElement = siteDefaultsElement.ChildElements.Item("ftpServer")

Set securityElement = ftpServerElement.ChildElements.Item("security")
Set sslElement = securityElement.ChildElements.Item("ssl")
   sslElement.Properties.Item("controlChannelPolicy").Value = "SslAllow"
   sslElement.Properties.Item("dataChannelPolicy").Value = "SslAllow"
   sslElement.Properties.Item("serverCertHash").Value = "57686f6120447564652c2049495320526f636b73"

adminManager.CommitChanges()