首先,我不确定是否应该在 StackOverflow 上询问这个问题,因为它用于编程,所以我认为 SuperUser 是更合适的地方。
我的托管服务提供商表示,对于我购买的托管包(我正在使用共享托管),FTP 功能不安全(不是 FTPS 也不是 SFTP)。
(我不太相信 CS,因为之前关于我的问题(关于共享主机中的 laravel)的答案是错误的,她说这是不可能的,但看了一些视频后我可以让它工作。)
首先,我认为这是正确的,因为连接到 FTP 的 URL 是这样的:ftp://ftp.[mywebname].com
但是当我尝试通过 FTP 客户端 FileZilla 连接时,控制台的输出是
Status: Resolving address of ftp.xxxxxxx.com
Status: Connecting to xxx.xxx.xxx.xxx:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Connected
Status: Retrieving directory listing...
Status: Directory listing of "/" successful
这是证书详细信息(图标还表明它已加密)这是屏幕截图:
另外,我尝试通过 FTP 客户端 Cyberduck 进行连接,它说连接不安全,并向我提供安全方式,即使证书也说“不受信任”。此选项还显示我第一次通过 FileZilla 连接的情况。
答案1
... 通过 FTP 客户端 Cyberduck,它说连接不安全
该服务器(真实名称和证书被隐藏,但显示的是真实服务器发生的情况)使用自签名证书,该证书也与主机名不匹配:
$ openssl s_client -starttls ftp -connect ftp.example.com:21
...
Certificate chain
0 s:/CN=server10.example.org/[email protected]
i:/CN=server10.example.org/[email protected]
这种证书可用于保护连接,但前提是客户端通过其他方式知道需要哪种证书,例如,如果提供商亲自告诉客户端服务器证书的指纹,然后客户端在连接时验证指纹。
在所有其他情况下,使用此类证书都是不安全的,因为任何人都可以创建此类证书并进行中间人攻击。
Status: Initializing TLS... Status: Verifying certificate... Status: TLS connection established
看起来“验证证书...”实际上并未完成或结果被丢弃或您之前信任过该证书。
除此之外,除非您强制使用 FTPS,否则 FTPS 是不安全的。如果您只是信任您的 FTP 客户端在可用时使用加密(即 TLS),否则继续使用而不加密,那么中间人所要做的就是拒绝AUTH TLS
用于创建 TLS 隧道的命令。如果您强制使用 FTPS 并且验证证书,那么 FTPS 就可以安全地使用。
要了解更多信息,我建议最好访问 security.stackexchange.com 进行询问。
答案2
我敢说您正在通过 FTP 连接的服务器的配置与此 FileZilla wiki 文章中所述一致。
https://wiki.filezilla-project.org/FTP_over_TLS
如果用户选择客户端,它将允许通过 tls 进行 ftp。
您是否尝试过设置 ftp 客户端(在本例中为“cyber duck”)以使用 tls?该 wiki 页面解释了如何配置一些不同的客户端。
此外,为了简洁起见,您可能需要搜索您的托管支持:ftp over tls