在 IIS 7 中通过 SSL 使用 FTP

作者:Robert McMurray

兼容性

版本 说明
IIS 7.5 FTP 7.5 服务作为 Windows 7 和 Windows Server 2008 R2 中 IIS 7.5 的功能提供。
IIS 7.0 FTP 7.0 和 FTP 7.5 服务是 IIS 7.0 带外提供的,需要从以下 URL 下载和安装该服务:https://www.iis.net/download/FTP

介绍

Microsoft 创建了一个新的 FTP 服务,该服务针对 Windows Server® 2008 完全重新编写。 此 FTP 服务包含许多新功能,使 Web 作者能够比以前更好地发布内容,并为 Web 管理员提供了更多的安全性和部署选项。

其中一个功能是通过安全套接字层 (SSL) 使用 FTP,该功能允许在 FTP 客户端和服务器之间加密会话。 本文档介绍以下内容:设置 FTP 站点;配置该站点以结合使用 SSL 与新的 FTP 用户界面,这样你可以直接编辑 IIS 7.0 配置文件。 该结构包含:

注意

本演练包含使用本地管理员帐户登录 FTP 站点的一系列步骤。 仅在使用环回地址或远程服务器中的 over SSL 应按照这些步骤进行操作。 如果你偏爱使用单独的用户帐户而非管理员帐户,则必须在必要时创建合适的文件夹并为用户帐户设置正确的权限。

先决条件

完成本文中的程序需要安装以下各项:

  1. IIS 7.0 必须安装在 Windows 2008 服务器上,并且必须安装 Internet Information Services 管理器。

  2. 新的 FTP 服务。 可以使用以下链接之一从 https://www.iis.net/ 网站下载并安装 FTP 服务:

    • 用于 IIS 7.0 的 FTP 7.5 (x64)
    • 用于 IIS 7.0 的 FTP 7.5 (x86)
  3. 你需为 FTP 发布创建根目录:

    • %SystemDrive%\inetpub\ftproot 处创建文件夹

    • 设置权限以允许管理员组进行访问:

      • 打开命令提示符。
      • 键入下列命令:ICACLS "%SystemDrive%\inetpub\ftproot" /Grant administrators:F /T
      • 关闭命令提示符。

注意

本演练中列出的设置将 %SystemDrive%\inetpub\ftproot 指定为 FTP 站点的路径。 你无需使用此路径;但如果你更改站点的位置,则必须更改整个演练中使用的与站点相关的路径。

可选:创建自签名 SSL 证书

在此可选任务中,你将创建自签名 SSL 证书,用于测试 FTP 站点。

注意

如果要为基于 Internet 的活动设置 FTP 站点,你将从许多证书颁发机构(如 VeriSign、Thawte、DigiCert 等)中的一个获得 SSL 证书。有关详细信息,请参阅证书颁发机构

  1. 打开 Internet Information Services (IIS 7.0) 管理器。
  2. 单击连接树的顶部节点处的计算机,然后双击服务器证书功能。
    Screenshot that shows the MY SERVER Home pane. Sever Certificates is selected.
  3. 在“操作”窗格中,单击“创建自签名证书”
    Screenshot that shows the Sever Certificates pane.
  4. 输入“我的 FTP 证书”作为新证书的名称,然后单击“确定”
    Screenshot that shows the Create Self Signed Certificate dialog box.

使用 IIS 7.0 管理器创建启用了 SSL 的 FTP 站点

步骤 1:使用 FTP 站点向导创建基于 SSL 的 FTP 站点

在第一步中,新建使用你的管理员帐户才能打开的 FTP 站点。

  1. 转到 IIS 7.0 管理器。 在“连接”窗格中,单击树中的“站点”节点

  2. 右键单击树中的“站点”节点,单击“添加 FTP 站点”,或者单击“操作”窗格中的“添加 FTP 站点”
    Screenshot that shows the context menu for Sites, in the Connections pane.

  3. 显示“添加 FTP 站点”向导时

    • 在“FTP 站点名称”框中输入“我的新 FTP 站点”,然后导航到在先决条件部分中创建的 %SystemDrive%\inetpub\ftproot 文件夹

      注意

      如果选择键入内容文件夹的路径,可以在路径中使用环境变量。

    • 单击 “下一步”

      Screenshot shows the Site Information page in the Add F T P Site dialog box.

  4. 在向导的下一页:

    • 从“IP 地址”下拉菜单中选择 FTP 站点的 IP 地址,或者选择接受默认选择“所有未分配”。由于你稍后将在本演练中使用管理员帐户,因此请确保限制对服务器的访问,并通过在“IP 地址”框中键入“127.0.0.1”来输入计算机的本地环回 IP 地址

    • 通常你会在“端口”框中输入 FTP 站点的 TCP/IP 端口。 在此演练中,选择接受默认端口 21。

    • 在此演练中,不使用主机名,因此请确保“虚拟主机”框为空

    • 确保“证书”下拉菜单设置为你的 SSL 证书。 例如,如果按可选步骤创建自签名证书,则下拉菜单应显示“我的 FTP 证书”。

    • 确保选中“允许 SSL”选项

    • 单击 “下一步”

      Screenshot that shows the Binding and S S L Settings page in the Add F T P Site dialog box. Allow S S L is selected.

  5. 在向导的下一页:

    • 对于“身份验证”设置,选择“基本”

    • 对于“授权”设置

      • 在“允许访问的对象”下拉菜单中,选择“指定用户”
      • 键入“administrator”作为用户名。
      • 对于“权限”选项,选择“读取”和“写入”
    • 完成这些项,然后单击“完成”

      Screenshot that shows the Authentication and Authorization Information page in the Add F T P Site dialog box. Basic, Read, and Write are all selected.

总结

你使用新的 FTP 服务成功新建了基于 SSL 的 FTP 站点。

回顾在此步骤中完成的项目:

  • 你新建了名为“我的新 FTP 站点”的新 FTP 站点,该站点的内容根目录位于 %SystemDrive%\inetpub\ftproot
  • 你将 FTP 站点绑定到了端口 21 上计算机的本地环回地址。
  • 你选择为 FTP 站点要求了安全套接字层 (SSL),并选择了 SSL 证书。
  • 你启用了基本身份验证,并为本地管理员帐户创建了读写访问授权规则。

步骤 2:配置其他 FTP SSL 设置

可以逐个站点自定义 FTP 的 SSL 策略。 可以为控制通道和数据通道指定不同的设置。 在此步骤中,你将为 FTP 站点配置额外的 SSL 设置,以确保即使所有其他 FTP 活动都未加密,所有用户凭据也已加密。

  1. 转到 IIS 7.0 管理器。 单击在步骤 1 中创建的 FTP 站点的节点。 显示所有 FTP 功能的图标。
    Screenshot that shows the My New F T P Site Home pane.

  2. 为配置 SSL 选项,双击“FTP SSL 设置”图标以打开 SSL 设置功能页面
    Screenshot that shows the My New F T P Site Home pane with F T P S S L Settings selected.

  3. 显示“FTP SSL 设置”页面时,选择“自定义”选项,然后单击“高级”按钮
    Screenshot that shows the F T P S S L Settings pane. Custom is selected.

  4. 显示“高级 SSL 策略”对话框时

    • 为控制通道选择“仅要求凭据”选项

      注意

      此设置要求通过 SSL 加密所有用户名和密码,但客户端可以选择是否加密所有其他控制通道活动。

    • 对于数据通道,选择“允许”选项

      注意

      此设置允许客户端选择是否加密任何数据通道活动。

    • 完成这些项,然后单击“确定”
      Screenshot that shows the Advanced S S L Policy dialog box.

  5. 在“FTP SSL 设置”页面中,单击“操作”窗格中的“应用”以保存 SSL 设置
    Screenshot that shows the F T P S S L Settings pane. Apply and Cancel are listed in the Actions pane.

总结

回顾在此步骤中完成的项目:

  • 你将控制通道 SSL 策略配置为了要求对所有用户凭据进行加密,并允许 FTP 客户端决定是否对所有其他控制通道活动进行加密。
  • 你配置了数据通道 SSL 策略,以允许 FTP 客户端决定是否对任何数据通道活动进行加密。

登录 FTP 站点

在步骤 1 中,你创建了可通过管理员帐号访问的 FTP 站点。 在步骤 2 中,你配置了控制通道 SSL 策略,以要求对所有用户凭据进行加密,同时允许 FTP 客户端选择是否对所有其他控制通道和数据通道活动进行加密。

使用支持 SSL 的 FTP 客户端登录 FTP 服务器时,FTP 服务器支持以下显式安全选项:

  • TLS-C/TLS - 使用 TLS 与 RFC2228 默认建立连接。 这意味着没有对数据连接的隐式保护。
  • TLS-P/SSL - 使用 TLS 建立连接。 这意味着数据连接受到隐式保护。

在大多数第三方 FTP 客户端中指定 SSL 连接选项时,可以配置这些设置。

通过编辑 IIS 7.0 配置文件添加基于 SSL 的 FTP 发布

你还可以通过编辑 IIS 7.0 配置文件将基于 SSL 的 FTP 发布添加到现有网站。

注意

编辑 applicationHost.config 文件需要完整的管理权限。 使用以下两种方法之一:

  • 使用“本地管理员”帐户登录到计算机。

  • 如果已使用具有管理员权限但不是本地“管理员”帐户的帐户登录,请使用“作为管理员运行”选项打开记事本。

注意

必须执行上述其中一步操作,因为 Windows Vista 和 Windows Server 2008 操作系统中的用户帐户控制 (UAC) 安全组件会阻止访问 applicationHost.config 文件。 有关 UAC 的详细信息,请参阅 用户帐户控制

以下步骤将引导你完成添加默认网站的 FTP 发布所需的所有设置。

步骤 1:检索 SSL 证书的哈希:

  1. 在“服务器证书”功能中,双击你的 SSL 证书。 例如,如果按可选步骤创建自签名证书,则双击名为“我的 FTP 证书”的证书。
  2. 单击“详细信息”选项卡。
  3. 浏览字段,直到找到“指纹”值
  4. 突出显示“指纹”值,数据显示如下
    "57 68 6F 61 20 44 75 64 65 2C 20 49 49 53 20 52 6F 63 6B 73"
  5. 从文本框复制十六进制数据并将其粘贴到剪贴板中。 然后,打开 Windows 记事本并将数据粘贴到空白文档中。

注意

稍后你将使用此信息。

步骤 2:将 FTP 添加到默认网站

  1. 使用文本编辑器(例如 Windows 记事本)打开 applicationHost.config 文件,该文件默认位于 %SystemRoot%\System32\inetsrv\config 文件夹中。

  2. 找到默认网站部分。 它应与下面的示例类似:

    <site name="Default Web Site" id="1">
        <application path="/">
            <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:80:" />
        </bindings>
    </site>
    
  3. 在绑定集合中新建绑定元素。 将新绑定元素的 protocol 属性值设置为包含“ftp”,然后将 bindingInformation 属性的端口值更改为包含“21”。 默认网站的设置现在应类似于以下示例:

    <site name="Default Web Site" id="1">
        <application path="/">
            <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:80:" />
            <binding protocol="ftp" bindingInformation="*:21:" />
        </bindings>
    </site>
    
  4. 在结束“绑定”标记下添加 ftpServer 部分,该部分将包含身份验证和 SSL 设置<><>。

    注意

    FTP 站点的身份验证设置是在站点级别上配置的,这与网站的身份验证不同,网站的身份验证可以根据 URL 进行配置。

    <ftpServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" userName="IUSR" />
                <basicAuthentication enabled="true" />
            </authentication>
            <ssl serverCertHash="" controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" />
        </security>
    </ftpServer>
    
  5. 将指纹数据从 SSL 证书复制并粘贴到 SSL 元素的 serverCertHash 属性中。 删除指纹数据中的所有空格。

    注意

    如果不将十六进制数据转换为大写,则该数据后续将不会在 IIS 管理器中显示。

    默认网站设置现在应包含如下示例:

    <site name="Default Web Site" id="1">
        <application path="/">
            <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:80:" />
            <binding protocol="ftp" bindingInformation="*:21:" />
        </bindings>
        <ftpServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                    <basicAuthentication enabled="true" />
                </authentication>
            </security>
            <ssl serverCertHash="57686F6120447564652C2049495320526F636B73" controlChannelPolicy="SslRequire" dataChannelPolicy="SslRequire" />
        </ftpServer>
    </site>
    
  6. 滚动到 applicationHost.config 文件的底部,为默认网站添加将包含授权设置的位置部分。

    注意

    在本例中,FTP 站点的授权设置是根据 URL 进行配置的。

    <location path="Default Web Site">
        <system.ftpServer>
            <security>
                <authorization>
                    <add accessType="Allow" users="administrator" permissions="Read, Write" />
                </authorization>
            </security>
        </system.ftpServer>
    </location>
    
  7. 保存 applicationHost.config 文件。

现在,你应能够使用基于 SSL 的 FTP 客户端登录默认网站。

总结

在此任务中,你已通过编辑 IIS 7.0 配置文件将基于 SSL 的 FTP 发布添加到默认网站。 回顾在此任务中完成的项目:

  • 你将 FTP 绑定添加到了默认网站。
  • 你为默认网站启用了 FTP 基本身份验证,禁用了 FTP 匿名身份验证。
  • 你将站点配置为了对所有控制通道和数据通道活动要求 SSL。
  • 你为默认网站配置了管理员帐户的读取/写入权限。