我正在尝试使用FluentFTP通过端口990(TLS)的FTPS连接下载文件。
但是代码无法建立连接,并显示异常为“根据验证过程,远程证书无效。”
当我手动使用FileZilla FTP工具时,FTP服务器正常连接(显示为通过TLS(隐式)通过ftps连接
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();
答案 0 :(得分: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) {
// add logic to test if certificate is valid here
// lookup the "Certificate" and "Chain" properties
e.Accept = true;
}
else {
e.Accept = true;
}
}
试试看!
答案 1 :(得分:0)
我遇到了同样的问题。 注意 fluentFTP 只支持外部接口,不支持隐式 我也试过 ftpWebRequest 没有成功。 尝试使用 winSCP。