2017-05-14 73 views
0

当我尝试连接到我的FTP服务器上传与FluentFTP文件我得到这个:FluentFTP证书错误

的远程证书根据验证程序是无效的。

然而,Filezilla工作正常,没有错误或警告。

难道我做错了什么,如果它实际上是与服务器的问题,我怎么能忽略这个错误

这里是我的代码:

var credentials = new NetworkCredential(Username, Password); 
FtpClient client = new FtpClient(Host, credentials) 
{ 
    Port = Port, 
    EncryptionMode = FtpEncryptionMode.Explicit 
}; 
client.DataConnectionEncryption = true; 

client.Connect(); 
var result = client.UploadFileAsync(FilePathName, RemotePathName, AllowOverwrite ? FtpExists.Overwrite : FtpExists.Skip, CreateRemoteDirectory, token).GetAwaiter().GetResult(); 
client.Disconnect(); 

我也尝试添加事件client.ValidateCertificate += Client_ValidateCertificate;

private static void Client_ValidateCertificate(FtpClient control, FtpSslValidationEventArgs e) 
{ 
    e.PolicyErrors = SslPolicyErrors.None; 
} 

但我无法得到这个工作或者我仍然得到相同的错误。

这里的输出从FileZilla中:

Status: Selected port usually in use by a different protocol. 
Status: Resolving address of xxxxxxxxxxxxxxxxxxxxxx 
Status: Connecting to xxx.xxx.xxx.xxx:xx... 
Status: Connection established, waiting for welcome message... 
Status: Initializing TLS... 
Status: Verifying certificate... 
Status: TLS connection established. 
Status: Logged in 
Status: Retrieving directory listing of "xxxxxxxxxxxxx"... 
Status: Directory listing of "xxxxxxxxxxxxx" successful 

回答

2

Client_ValidateCertificate需要手动接受这样的证书:

private static void Client_ValidateCertificate(FtpClient control, FtpSslValidationEventArgs e) 
{ 
    e.Accept = true; 
} 

然而这真是一个糟糕的主意,只是盲目地接受任何证书。我最终做了这样的事情:

private void Client_ValidateCertificate(FtpClient control, FtpSslValidationEventArgs e) 
{ 
    if (e.PolicyErrors == SslPolicyErrors.None || e.Certificate.GetRawCertDataString() == TrustedRawCertData) 
    { 
     e.Accept = true; 
    } 
    else 
    { 
     throw new Exception($"{e.PolicyErrors}{Environment.NewLine}{GetCertificateDetails(e.Certificate)}"); 
    } 
} 
+0

盲目接受任何证书是一样坏,根本不使用加密。 –

+0

我认为证书和加密没有任何关系。不加密会影响传输中的文件/请求,并且证书会验证您要访问的人员?因此,如果您知道您与谁交谈,您可以忽略该证书,但您仍然希望加密,以便其他人无法拦截您的流量。请教我,如果我不正确。 – LorneCash

+0

也许更好的问题是如何设置/更改验证过程。再次如果你有任何缺点,请分享。 – LorneCash