The handshake failed due to an unexpected packet format
Most likely your FTP server requires explicit SSL. So first try to connect without SSL:
// C#
client.Connect("ftp.example.org");
' VB.NET
client.Connect("ftp.example.org")
Then, before logging-in, start explicit SSL negotiation:
// C# client.AuthSSL();
' VB.NET client.AuthSSL()
Now, your connection is secured.
Remember that you can ignore SSL certificate errors using ServerCertificateValidate event:
// C# version
using (Ftp client = new Ftp())
{
// Use this line to validate self-signed certificates:
client.ServerCertificateValidate += ValidateCertificate;
client.Connect("ftp.example.org");
client.AuthSSL();
client.Login("username", "password");
foreach (FtpItem item in client.GetList())
{
if (item.IsFolder == true)
Console.WriteLine("[{0}]", item.Name);
else
Console.WriteLine("{0}", item.Name);
}
client.Close();
}
private static void ValidateCertificate(
object sender,
ServerCertificateValidateEventArgs e)
{
const SslPolicyErrors ignoredErrors =
SslPolicyErrors.RemoteCertificateChainErrors |
SslPolicyErrors.RemoteCertificateNameMismatch;
if ((e.SslPolicyErrors & ~ignoredErrors) == SslPolicyErrors.None)
{
e.IsValid = true;
return;
}
e.IsValid = false;
}
' VB.NET version
Using client As New Ftp()
' Use this line to validate self-signed certificates:
AddHandler client.ServerCertificateValidate, AddressOf ValidateCerificate
client.Connect("ftp.example.org")
client.AuthSSL()
client.Login("username", "password")
For Each item As FtpItem In client.GetList()
If item.IsFolder = True Then
Console.WriteLine("[{0}]", item.Name)
Else
Console.WriteLine("{0}", item.Name)
End If
Next
client.Close()
End Using
Private Sub ValidateCerificate( _
ByVal sender As Object, _
ByVal e As ServerCertificateValidateEventArgs)
Const ignoredErrors As SslPolicyErrors = _
SslPolicyErrors.RemoteCertificateChainErrors Or _
SslPolicyErrors.RemoteCertificateNameMismatch
If (e.SslPolicyErrors And Not ignoredErrors) = SslPolicyErrors.None Then
e.IsValid = True
Return
End If
e.IsValid = False
End Sub