4

我正在尝试使用 FluentFTP 通过 FTPS 连接与端口 990 (TLS) 下载文件。

但是代码无法建立连接并显示异常为“根据验证程序,远程证书无效”。

当我手动使用 FileZilla FTP 工具时,FTP 服务器连接正常(显示为通过 ftps over TLS 连接(隐式)

FtpClient fclient = new FtpClient(hostname, username, password); 
fclient.EncryptionMode = FtpEncryptionMode.Implicit;
fclient.SslProtocols = SslProtocols.Tls12; //Also tried with TLS1 and TLS
fclient.Port = 990;          
fclient.Connect();
4

2 回答 2

1

试试这个(取自 FluentFTP 的 ConnectFTPSCertificate.cs 示例)。重要的部分是回调OnValidateCertificate

public static async Task ConnectFTPSCertificateAsync() {
    var token = new CancellationToken();
    using (var conn = new FtpClient("127.0.0.1", "ftptest", "ftptest")) {

        conn.EncryptionMode = FtpEncryptionMode.Explicit;
        conn.ValidateCertificate += new FtpSslValidation(OnValidateCertificate);
        await conn.ConnectAsync(token);
    }
}

private static void OnValidateCertificate(FtpClient control, FtpSslValidationEventArgs e) {
    if (e.PolicyErrors == System.Net.Security.SslPolicyErrors.None) {
        e.Accept = true;
    }
    else {
        // add logic to test if certificate is valid here
        // lookup the "Certificate" and "Chain" properties
        e.Accept = false;
    }
}
于 2021-06-29T14:47:36.453 回答
-1

我遇到了同样的问题。请注意,fluentFTP 仅支持外部接口而不是隐式我也尝试了 ftpWebRequest,但没有成功。尝试使用 winSCP。

于 2021-06-29T14:28:28.703 回答