我运营一个使用 IIS 10 FTP 服务器的网站,并将其设置为使用 TLS 上的显式 FTP,在过去一年多的时间里,它运行良好。我通过 Digicert 购买了服务器证书。
服务器证书已于 2019-01-04 到期。我在 Digicert 续订了证书,有效期至 2021 年。然后,我将其安装在 Windows 服务器上,并更新了 FTP 站点以使用新证书。
但是,当我尝试连接 FileZilla Client 时,日志报告以下内容:
Status: Connecting to xxx.xxx.xxx.xxx:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
但随后弹出一条警告,称该证书已于 2019-01-04 过期。
如果我单击“确定”,它会继续,但随后会显示:主连接和数据连接证书不匹配。这是“初始化 TLS...”之后的日志。
Status: Verifying certificate...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is current directory.
Command: TYPE I
Response: 200 Type set to I.
Command: PASV
Response: 227 Entering Passive Mode (38,101,199,155,19,46).
Command: LIST
Response: 150 Opening BINARY mode data connection.
Error: Primary connection and data connection certificates don't match.
Error: Transfer connection interrupted: ECONNABORTED - Connection aborted
Response: 226 Transfer complete.
Error: Failed to retrieve directory listing
Status: Disconnected from server: ECONNABORTED - Connection aborted
这就像初始化 TLS 逻辑以某种方式抓取旧证书,但一旦连接,它就会抓取新证书并发现它们不匹配。
如果我更新 IIS FTP 服务器以使用旧证书并重试连接,我会在初始化 TLS 时收到相同的证书过期警告,但是当我单击“确定”时,它会连接并且我可以毫无问题地传输文件(尽管我必须在每次传输时确认证书是否已过期)。
这是怎么回事?FileZilla 客户端是否缓存了初始化 TLS 证书?我是否需要在 IIS FTP 配置中进行其他设置或操作才能“获取”新证书?(我尝试在更新证书后重新启动 Web 服务器 - 仍然没有成功,同样的问题。)
编辑2019-01-13:我继续从 Windows 证书存储中删除了过期的证书,现在当我尝试通过 FTP 连接时,AUTH TLS 命令失败:
Status: Connecting to ...
Status: Connection established, waiting for welcome message...
Response: 220 Microsoft FTP Service
Command: AUTH TLS
Response: 431 Failed to setup secure session.
Command: AUTH SSL
Response: 431 Failed to setup secure session.
Error: Could not connect to server
这告诉我这是服务器端的问题。也就是说,服务器正在尝试查找过期的证书,但找不到。我不知道为什么 IIS FTP 仍在尝试使用旧证书。
如果我查看%WinDir%\System32\Inetsrv\Config\applicationHost.config
,我会看到 FTP 服务器部分的以下设置:
<ftpServer>
<security>
<ssl serverCertHash="E10..." serverCertStoreName="My" ssl128="false" controlChannelPolicy="SslAllow" dataChannelPolicy="SslAllow" />
<authentication>
<basicAuthentication enabled="true" />
</authentication>
</security>
</ftpServer>
报告serverCertHash
是指纹的当前的证书(不是过期的证书),所以我不知道 IIS FTP 如何/在何处/为何使用过期的证书进行 AUTH TLS。
编辑2019-02-13:
不幸的是,我无法让它工作。最后,我安装了 FileZilla Server 并创建了一个自签名证书供 FileZilla Server 使用。
谢谢
答案1
我对这一点感到很茫然,然后偶然发现了解决办法(现在对我有用)。
- 在 IIS 管理器中选择 IIS 服务器的根节点
- 在右侧窗格中选择 FTP SSL 设置
- 选择并将新证书应用到根节点
它现在适用于多个 ftp 主机。我之前只是将证书应用于每个主机节点...