![IIS 7.5 FTPS 外部访问 - 534 策略需要 SSL](https://linux22.com/image/554787/IIS%207.5%20FTPS%20%E5%A4%96%E9%83%A8%E8%AE%BF%E9%97%AE%20-%20534%20%E7%AD%96%E7%95%A5%E9%9C%80%E8%A6%81%20SSL.png)
我已经设置了一个需要 SSL 的 FTP 站点,但是当我尝试从外部连接它时出现错误:
220 Microsoft FTP 服务 534 策略需要 SSL。
我知道 - 我是这样设置的!为什么它不从网站获取 SSL 证书并允许我登录?!
(顺便提一下,所有教程允许但不要要求SSL——虽然这可以解决问题,但这是因为没有使用 SSL!)。
我怀疑可能是我需要一个支持 FTPS(基于 SSL 的 FTP)的客户端,而 Windows 资源管理器只使用不支持 FTPS 的 IE。但是尝试使用 FileZilla 和 WinSCP 后,我取得了一些进展,但它在 TLS/SSL 协商时挂起,等待服务器的响应……
更新:我已尝试过(来自:http://learn.iis.net/page.aspx/309/configuring-ftp-firewall-settings/):
- 为 FTP 服务配置被动端口范围。
- 为特定 FTP 站点配置外部 IPv4 地址。
- 配置防火墙以允许 FTP 服务侦听其打开的所有端口。
- 禁用状态 FTP 过滤,以便 Windows 防火墙不会阻止 FTP 流量。
但我仍然得到(在 FileZilla 中尝试主动和被动):
Status: Connecting to 203.x.x.x:21...
Status: Connection established, waiting for welcome message...
Response: 220 Microsoft FTP Service
Command: AUTH TLS
Response: 234 AUTH command ok. Expecting TLS Negotiation.
Status: Initializing TLS...
Error: Connection timed out
Error: Could not connect to server
Windows 防火墙日志毫无帮助,没有任何内容可说。
更新2:关闭防火墙并不能解决问题。
我简直不敢相信让如此简单的东西工作如此困难,而且即使按照文档操作它也无法工作。
更新3:在主动模式下,通过环回连接在本地运行 FileZilla,在被动模式下,我可以:
Command: LIST
Response: 150 Opening BINARY mode data connection.
Error: GnuTLS error -53: Error in the push function.
关闭两端的防火墙后,我仍然无法连接客户端,并出现与上述相同的错误。
答案1
您说得对,需要 FileZilla 或 WinSCP。基本上,这些 FTP 设置表示,任何试图通过端口 21 使用正常方法的人都应被拒绝,并且它不会尝试重新建立不同类型的连接。因此 IE 和命令行选项将不起作用。
一个好的测试是在 FTP 服务器上本地安装 FileZilla,或者在中间没有防火墙的另一台服务器上安装。让它在那里运行以证明它有效,然后开始查看防火墙策略以允许它通过。最有可能的是,您再次运行了防火墙规则,该规则阻止了 FTPS 所需的动态端口。
在 FileZilla 中,使用“显式 FTP over TLS”并使用主动和被动模式进行测试。主动和被动需要不同的防火墙端口。
答案2
确认:您需要一个支持 FTPS 的客户端。Internet Explorer 中的 WinInet 和 Windows 的命令行 FTP.EXE 不支持。
答案3
我怀疑您遇到了我过去遇到的类似问题,即我们的边境安全设备对 FTP 连接有点太有帮助了。简而言之,如果您拥有现代企业 UTM 设备,请尝试将 TCP/990 绑定到您的 FTP 站点,并允许它通过防火墙(如果您使用 FTPS)。UTM 上的“FTP 助手”服务可能会妨碍您,因为它希望看到未加密的流量穿越 TCP/21。
我写了一篇博客文章来描述该问题及其解决方案:http://www.lewisroberts.com/2010/08/06/scripting-ftpes-explicit-tlsssl-with-curl/
您还应该在 IIS 中配置被动 FTP 端口范围,并在防火墙中打开这些端口。在 IIS 中,单击顶级节点(服务器名称),然后单击 FTP 防火墙支持。在其中,定义您必须在防火墙中打开并转发到 FTP 服务器的端口范围。
您可能会忽略有关 cURL 的部分,但是,嘿,您将来可能会发现它很有用!
高血压
-刘易斯
答案4
这篇文章与我之前的文章一致,但我想包含更多信息。以下是您可以进一步测试的一些步骤(在更新 3 之后)。
对于以下所有内容,请使用 localhost FileZilla
- 尝试重新恢复被动端口设置,然后在本地机器上进行测试。本地机器应该能够以主动和被动模式进行连接。
- 尝试将 SSL 设置设为允许而不是要求,只是为了解决你的困惑。
- 尝试再次设置一个新的 FTP 帐户并查看其如何工作。
- 只是为了确定,您使用的是 FTPES 对吗?
总结一下,您的设置应如下所示: - FTP 身份验证。匿名已禁用,基本已启用。 - FTP 授权规则。创建一个允许所有规则并删除您的临时规则...仅用于测试。曾经有一个错误,它不适用于授权规则的某些用户组合...尽管它会显示为拒绝访问,所以可能不是您的问题。 - 确保使用 Windows 用户帐户(而不是 IIS 用户)进行测试,直到缩小范围 - 确保您的 Windows 用户可以访问 FTP 根文件夹 - FTP SSL 设置应为允许或要求进行测试(实时时需要)。确保您的 SSL 证书有效。您可以使用另一个自签名证书进行测试以排除该问题...尽管由于它适用于主动模式,所以这可能不是问题所在。 - 在其他所有东西都正常工作之前,请勿使用 FTP 标头(在站点绑定中) - FTP 用户隔离:在许多情况下,第三个选项都很好,但最上面的选项是一个很好的简单测试选项。
我仍然相信它与被动 ftp 端口或防火墙的其他东西有关,因此上述许多步骤都无济于事,但检查一下它们也没有什么坏处。
您在客户端计算机和 FTP 服务器之间使用 VPN 还是其他什么?这也会影响被动 FTP。