Freigeben über


Standardeinstellungen für FTP über SSL: <ssl>-Element

Übersicht

Das <ssl>-Element gibt die Einstellungen für FTP über Secure Sockets Layer (SSL) für den FTP-Dienst an. FTP über SSL wurde erstmals für IIS 7 in FTP 7.0 eingeführt.

Im Gegensatz zur Verwendung von HTTP über SSL, das einen separaten Port und eine separate Verbindung für die sichere (HTTPS)-Kommunikation erfordert, erfolgt die sichere FTP-Kommunikation auf demselben Port wie die nicht sichere Kommunikation. FTP 7 unterstützt zwei verschiedene Formen von FTP über SSL:

  • Explizites FTPS: Standardmäßig verwenden FTP-Sites und -Clients Port 21 für den Steuerkanal, und der Server und Client handeln sekundäre Ports für Datenkanalverbindungen aus. Bei einer typischen FTP-Anforderung stellt ein FTP-Client eine Verbindung mit einer FTP-Site über den Steuerkanal her, und anschließend kann der Client SSL/TLS mit dem Server entweder für den Steuerkanal oder den Datenkanal aushandeln. Wenn Sie FTP 7 verwenden, verwenden Sie explizites SSL, wenn Sie FTPS aktivieren und die FTP-Site einem anderen Port als Port 990 zuweisen.
  • Implizites FTPS: Implizites FTPS ist eine ältere Form von FTP über SSL, die noch von FTP 7 unterstützt wird. Bei implizitem FTPS muss ein SSL-Handshake ausgehandelt werden, bevor FTP-Befehle vom Client gesendet werden können. Obwohl explizites FTPS es dem Client ermöglicht, willkürlich zu entscheiden, ob SSL verwendet wird, erfordert implizites FTPS zudem die Verschlüsslung der gesamten FTP-Sitzung. Wenn Sie FTP 7 verwenden, verwenden Sie implizites SSL, wenn Sie FTPS aktivieren und die FTP-Site Port 990 zuweisen.

Abhängig von den Sicherheitsoptionen, die Sie in den Attributen controlChannelPolicy und dataChannelPolicy konfigurieren, kann ein FTP-Client in einer einzelnen expliziten FTPS-Sitzung mehrmals zwischen einem sicheren und einem nicht sicheren Modus wechseln. Je nach Ihren geschäftlichen Anforderungen gibt es verschiedene Möglichkeiten, wie dies implementiert werden kann:

controlChannelPolicy dataChannelPolicy Hinweise
SslAllow SslAllow Bei dieser Konfiguration kann der Client entscheiden, ob Teile der FTP-Sitzung verschlüsselt werden sollen.
SslRequireCredentialsOnly SslAllow Diese Konfiguration schützt Ihre FTP-Clientanmeldeinformationen vor Lauschangriffen und ermöglicht dem Client zu entscheiden, ob Datenübertragungen verschlüsselt werden sollen.
SslRequireCredentialsOnly SslRequire Diese Konfiguration setzt voraus, dass die Anmeldeinformationen des Clients sicher sind, und der Client kann dann entscheiden, ob FTP-Befehle verschlüsselt werden sollen. Allerdings müssen alle Datenübertragungen verschlüsselt werden.
SslRequire SslRequire Diese Konfiguration ist am sichersten – der Client muss SSL mithilfe der FTPS-bezogenen Befehle aushandeln, bevor andere FTP-Befehle ausgeführt werden können, und alle Datenübertragungen müssen verschlüsselt werden.

Kompatibilität

Version Hinweise
IIS 10.0 Das <ssl>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <ssl>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <ssl>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <ssl>-Element des <security>-Elements wird als Feature von IIS 7.5 bereitgestellt.
IIS 7.0 Das <ssl>-Element des <security>-Elements wurde in FTP 7.0 als separater Download für IIS 7.0 eingeführt.
IIS 6.0 Der FTP-Dienst in IIS 6.0 unterstützt FTP über SSL nicht.

Hinweis

Die Dienste FTP 7.0 und FTP 7.5 waren nicht im Lieferumfang von IIS 7.0 enthalten, daher mussten die Module von der folgenden URL heruntergeladen und installiert werden:

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

Bei Windows 7 und Windows Server 2008 R2 wird der FTP 7.5-Dienst als Feature für IIS 7.5 bereitgestellt, sodass das Herunterladen des FTP-Diensts nicht mehr erforderlich ist.

Setup

Um die FTP-Veröffentlichung für Ihren Webserver zu unterstützen, müssen Sie den FTP-Dienst installieren. Führen Sie dazu die folgenden Schritte aus:

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.

  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.

  3. Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.

  4. Erweitern Sie auf der Seite Serverrollen den Eintrag Webserver (IIS), und wählen Sie dann FTP-Server aus.

    Hinweis

    Um die Authentifizierung mittels ASP.NET-Mitgliedschaft oder IIS-Manager für den FTP-Dienst zu unterstützen, müssen Sie zusätzlich zu FTP-Dienst die Option FTP-Erweiterbarkeit auswählen.
    Screenshot that shows F T P Extensibility selected for Windows Server 2012..

  5. Klicken Sie auf Weiter, und wählen Sie dann auf der Seite Features auswählen erneut Weiter aus.

  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.

  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Klicken Sie auf dem Startbildschirm in der unteren linken Ecke mit der rechten Maustaste auf die Schaltfläche Start, und wählen Sie dann Systemsteuerung aus.

  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.

  3. Erweitern Sie Internetinformationsdienste, und wählen Sie dann FTP-Server aus.

    Hinweis

    Um die Authentifizierung mittels ASP.NET-Mitgliedschaft oder IIS-Manager für den FTP-Dienst zu unterstützen, müssen Sie auch FTP-Erweiterbarkeit auswählen.
    Screenshot that shows F T P Extensibility selected for Windows 8.

  4. Klicken Sie auf OK.

  5. Klicken Sie auf Schließen.

Windows Server 2008 R2

  1. Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und wählen Sie dann Server-Manager aus.

  2. Erweitern Sie im Hierarchiebereich des Server-Managers den Eintrag Rollen, und klicken Sie dann auf Webserver (IIS).

  3. Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienste hinzufügen.

  4. Erweitern Sie auf der Seite Rollendienste auswählen des Assistenten zum Hinzufügen von Rollendiensten den Eintrag FTP-Server.

  5. Wählen Sie FTP-Dienst aus.

    Hinweis

    Um die Authentifizierung mittels ASP.NET-Mitgliedschaft oder IIS-Manager für den FTP-Dienst zu unterstützen, müssen Sie auch FTP-Erweiterbarkeit auswählen.
    Screenshot that shows F T P Service and Extensibility selected for Windows Server 2008.

  6. Klicken Sie auf Weiter.

  7. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.

  8. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 7

  1. Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.

  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.

  3. Erweitern Sie Internetinformationsdienste und dann FTP-Server.

  4. Wählen Sie FTP-Dienst aus.

    Hinweis

    Um die Authentifizierung mittels ASP.NET-Mitgliedschaft oder IIS-Manager für den FTP-Dienst zu unterstützen, müssen Sie auch FTP-Erweiterbarkeit auswählen.
    Screenshot that shows F T P Extensibility selected for Windows 7.

  5. Klicken Sie auf OK.

Windows Server 2008 oder Windows Vista

  1. Laden Sie das Installationspaket von der folgenden URL herunter:

  2. Befolgen Sie die Anweisungen in der folgenden exemplarischen Vorgehensweise, um den FTP-Dienst zu installieren:

Gewusst wie

Konfigurieren der SSL-Standardoptionen für eine FTP-Site

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS):

    • Vorgehensweise unter Windows Server 2012 oder Windows Server 2012 R2:

      • Klicken Sie auf der Taskleiste auf Server-Manager, wählen Sie Tools und dann Internetinformationsdienste-Manager (IIS) aus.
    • Vorgehensweise unter Windows 8 oder Windows 8.1:

      • Halten Sie die Windows-Logo-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
      • Klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS).
    • Vorgehensweise unter Windows Server 2008 oder Windows Server 2008 R2:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und wählen Sie dann Internetinformationsdienste-Manager (IIS) aus.
    • Vorgehensweise unter Windows Vista oder Windows 7:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltung und dann auf Internetinformationsdienste-Manager (IIS).
  2. Klicken Sie im Bereich Verbindungen auf den Servernamen.

  3. Doppelklicken Sie im Bereich Start des Servers auf das Feature SSL-Einstellungen für FTP.
    Screenshot that shows F T P S S L Settings selected.

  4. Wählen Sie in der Liste SSL-Zertifikat das Zertifikat aus, das Sie für Verbindungen mit dem FTP-Server verwenden möchten.
    Screenshot that shows the F T P S S L Settings pane. Allow S S L connections is selected.

  5. Wählen Sie unter SSL-Richtlinie eine der folgenden Optionen aus:

    • SSL-Verbindungen zulassen: Gestattet dem FTP-Server die Unterstützung von Nicht-SSL- und SSL-Verbindungen mit einem Client.

    • SSL-Verbindungen erfordern: Erfordert die SSL-Verschlüsselung für die Kommunikation zwischen dem FTP-Server und einem Client.

    • Benutzerdefiniert: Ermöglicht es Ihnen, eine andere SSL-Verschlüsselungsrichtlinie für den Steuerkanal und den Datenkanal zu konfigurieren. Wenn Sie diese Option auswählen, klicken Sie auf die Schaltfläche Erweitert. Wenn das Dialogfeld Erweiterte SSL-Richtlinie geöffnet wird, wählen Sie die folgenden Optionen aus:

      • Wählen Sie unter Steuerkanal eine der folgenden Optionen für die SSL-Verschlüsselung über den Steuerkanal aus:

        • Zulassen: Gibt an, dass SSL für den Steuerkanal zulässig ist. Ein FTP-Client kann SSL für den Steuerkanal verwenden, dies ist jedoch nicht erforderlich.
        • Erforderlich: Gibt an, dass SSL für den Steuerkanal erforderlich ist. Ein FTP-Client kann nicht zu einem nicht sicheren Kommunikationsmodus für den Steuerkanal wechseln.
        • Nur für Anmeldeinformationen erforderlich: Gibt an, dass nur die Benutzeranmeldeinformationen über eine SSL-Sitzung gesendet werden müssen. Ein FTP-Client muss SSL für den Benutzernamen und das Kennwort verwenden, er muss jedoch nicht SSL für den Steuerkanal verwenden, nachdem er sich angemeldet hat.
      • Wählen Sie unter Datenkanal eine der folgenden Optionen für die SSL-Verschlüsselung über den Datenkanal aus:

        • Zulassen: SSL ist für den Datenkanal zulässig. Ein FTP-Client kann SSL für den Datenkanal verwenden, dies ist jedoch nicht erforderlich.
        • Erforderlich: SSL ist für den Datenkanal erforderlich. Ein FTP-Client kann nicht zu einem nicht sicheren Kommunikationsmodus für den Datenkanal wechseln.
        • Verweigern: SSL wird für den Datenkanal verweigert. Ein FTP-Client kann SSL nicht für den Datenkanal verwenden.
      • Klicken Sie auf OK, um das Dialogfeld Erweiterte SSL-Richtlinie zu schließen.

  6. Klicken Sie im Bereich Aktionen auf Übernehmen.

Konfiguration

Attribute

Attribut Beschreibung
controlChannelPolicy Optionales Enumerationsattribut.

Gibt die SSL-Richtlinie für den FTP-Steuerkanal an.

Hinweis: Es gibt keinen Enumerationswert, der SSL für den Befehlskanal verweigert. Um SSL zu verweigern, binden Sie kein SSL-Zertifikat an die FTP-Site, indem Sie einen Zertifikathash im Attribut serverCertHash angeben.
Wert Beschreibung
SslAllow Gibt an, dass SSL für den Steuerkanal zulässig ist.

Der numerische Wert ist 0.
SslRequire Gibt an, dass SSL für den Steuerkanal erforderlich ist.

Der numerische Wert ist 1.
SslRequireCredentialsOnly Gibt an, dass nur die Befehle USER und PASS über eine SSL-Sitzung gesendet werden müssen. Nachdem sich ein FTP-Client angemeldet hat, kann der Client in einen nicht sicheren Modus wechseln.

Der numerische Wert ist 2.
Der Standardwert ist SslRequire.
dataChannelPolicy Optionales Enumerationsattribut.

Gibt die SSL-Richtlinie für den FTP-Datenkanal an.
Wert Beschreibung
SslAllow Gibt an, dass SSL für den Datenkanal zulässig ist.

Der numerische Wert ist 0.
SslRequire Gibt an, dass SSL für den Datenkanal erforderlich ist.

Der numerische Wert ist 1.
SslDeny Gibt an, dass SSL für den Datenkanal verweigert wird.

Der numerische Wert ist 2.
Der Standardwert ist SslRequire.
serverCertHash Optionales Zeichenfolgeattribut.

Gibt den Fingerabdruckhash für das serverseitige Zertifikat an, das für SSL-Verbindungen verwendet werden soll.

Es ist kein Standardwert vorhanden.
serverCertStoreName Optionales Zeichenfolgeattribut.

Gibt den Zertifikatspeicher für SSL-Serverzertifikate an.

Der Standardwert ist MY.
ssl128 Optionales Boolean -Attribut.

Gibt an, ob 128-Bit-SSL erforderlich ist.

Der Standardwert ist false.

Untergeordnete Elemente

Keine.

Konfigurationsbeispiel

Im folgenden Konfigurationsbeispiel wird die standardmäßige Aktivierung des SSL-Zugriffs für den Steuerkanal und den Datenkanal des FTP-Diensts veranschaulicht.

SSL-Konfigurationsbeispiel (temp desc).

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

Beispielcode

Die folgenden Beispiele zeigen, wie Sie den SSL-Zugriff für den Steuerkanal und den Datenkanal des FTP-Diensts standardmäßig aktivieren.

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

Hinweis

Sie müssen den commit-Parameter auf apphost festlegen, wenn Sie „AppCmd.exe“ verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen in den entsprechenden Location-Abschnitt der Datei „ApplicationHost.config“ committet.

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()