使用basic-ftp连接FTP服务器时连接立即中断问题求助
问题原因
错误信息Hostname/IP does not match certificate's altnames: IP: 5.134.14.180 is not in the cert's list已明确指出核心问题:你用来连接FTP服务器的IP不在SSL证书的**备用名称(SAN)**列表中,导致TLS握手完成后证书验证失败,客户端主动发送QUIT命令断开连接。
解决方案
1. 修复证书配置(生产环境推荐)
- 给FTP服务器的SSL证书添加目标IP(5.134.14.180)到证书的**Subject Alternative Name(SAN)**字段中;
- 如果FTP服务器绑定了域名,优先使用域名作为
FTP_HOST的值,同时确保证书申请时已将该域名加入SAN列表。
2. 临时跳过证书验证(仅开发环境使用)
如果只是本地调试需要,可以绕过证书验证(生产环境禁止使用,会导致连接失去安全保障),修改代码中的access配置:
const client = new ftp.Client(); client.ftp.verbose = process.env.NODE_ENV === 'development'; try { await client.access({ host: process.env.FTP_HOST, user: process.env.FTP_USER, password: process.env.FTP_PASSWORD, port: parseInt(process.env.FTP_PORT ?? '21'), secure: true, secureOptions: { rejectUnauthorized: false } // 新增此行跳过证书验证 }); console.log('connected'); client.close(); res.status(200).json({ message: 'Connexion réussie' }); } catch (error) { res.status(400).json({ message: "Erreur lors de l'upload" }); }
3. 核对FTP连接地址配置
确认process.env.FTP_HOST的取值:如果服务器有可用的、已包含在证书SAN中的域名,替换当前的IP地址使用域名连接,避免IP与证书不匹配的问题。
内容的提问来源于stack exchange,提问作者Ismail_Aj
相关产品推荐
相关产品推荐

