更新 IIS 10 的 FTP 站点证书 - FTP 客户端在主连接上看不到新更新的证书

更新 IIS 10 的 FTP 站点证书 - FTP 客户端在主连接上看不到新更新的证书

我运营一个使用 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

我对这一点感到很茫然,然后偶然发现了解决办法(现在对我有用)。

  1. 在 IIS 管理器中选择 IIS 服务器的根节点
  2. 在右侧窗格中选择 FTP SSL 设置
  3. 选择并将新证书应用到根节点

它现在适用于多个 ftp 主机。我之前只是将证书应用于每个主机节点...

相关内容