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

Sco*_*ell 6 iis certificate ftps

我运行一个使用 IIS 10 的 FTP 服务器的网站,并将其设置为使用基于 TLS 的显式 FTP,并且它在去年+中运行良好。我通过Digicert购买了服务器证书。

服务器证书已于 2019 年 1 月 4 日过期。我在 Digicert 更新了该证书,该证书在 2021 年有效。然后我将其安装在 Windows 服务器上,并更新了 FTP 站点以使用新证书。

但是,当我尝试连接 FileZilla 客户端时,日志报告以下内容:

Status: Connecting to xxx.xxx.xxx.xxx:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Run Code Online (Sandbox Code Playgroud)

但随后弹出警告,指出证书已于 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
Run Code Online (Sandbox Code Playgroud)

这就像初始化 TLS 逻辑以某种方式获取旧证书,但一旦连接,它就会获取新证书并发现它们不匹配。

如果我更新 IIS FTP 服务器以使用旧证书并重试连接,我会在初始化 TLS 上收到相同的过期证书警告,但是当我单击“确定”时,它会连接并且我可以毫无问题地传输文件(尽管我必须确认)每次转让证书都会过期)。

这里发生了什么?FileZilla 客户端是否缓存初始化 TLS 证书?我需要在 IIS FTP 配置中执行一些其他设置或操作才能“获取”新证书吗?(我尝试在更新证书后重新启动网络服务器 - 仍然没有骰子,同样的问题。)

编辑 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
Run Code Online (Sandbox Code Playgroud)

这告诉我这是服务器端的问题。即,服务器尝试查找过期的证书,但找不到。我不明白为什么 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>
Run Code Online (Sandbox Code Playgroud)

报告的是当前serverCertHash证书(而不是过期证书)的指纹,因此我不知道 IIS FTP 如何/在何处/为何使用过期证书进行 AUTH TLS。

编辑2019-02-13:

不幸的是,我无法让这个工作。最后,我安装了 FileZilla Server 并创建了一个自签名证书供 FileZilla Server 使用。

谢谢

小智 6

我对此一无所知,并偶然发现了解决方案(现在对我有用)。

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

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