是否可以在托管多个网站(域)的服务器上通过 TLS 进行 FTP ?
我可以获取任何域的证书,但问题是我无法知道用户从其客户端连接到哪个域。因此我不知道要将哪个证书发送给 FTP 客户端。我知道在他发送用户和密码之后,但不知道之前,所以我无法在 FTP 服务器启动阶段建立安全连接。
有没有办法解决?
答案1
FTP 本身没有主机名的概念。理论上,客户端可能会在 TLS 握手中将预期的主机名作为 ClientHello 中的 server_name 扩展 (SNI) 发送。这样,服务器就可以决定发送哪个证书。但尽管这对于 HTTP 来说很常见,但我怀疑所有 FTP 服务器和客户端都支持它。粗略搜索发现,最新版本的 ProFTPd 服务器和 FileZilla 客户端应该支持它。
当然,您也可以在固定主机名上提供 FTP 服务器,然后拥有特定于域的主目录和凭据。这样,它可以与任何服务器或客户端一起使用,甚至无需 TLS(不推荐)。