Raw FTP SSL with C#

Posted by Chuck on Stack Overflow See other posts from Stack Overflow or by Chuck
Published on 2010-03-26T14:47:33Z Indexed on 2010/03/27 3:13 UTC
Read the original article Hit count: 421

Filed under:
|
|
|
|

Hi,

I'm trying to understand how SSL works. In my wish to make a small FTP client which supports SSL I've run into some problems:

TcpClient FtpConnection = new TcpClient(FtpServer, FtpPort);
NetworkStream FtpStream = FtpConnection.GetStream();
StreamReader FtpReader = new StreamReader(FtpStream);
FtpWriter = new StreamWriter(IrcStream);
send_cmd("AUTH SSL");

send_cmd is just a FtpWriter.WriteLine(text); FtpWriter.Flush(); function.

My "problem" is this: First I need to make a (non-ssl) connection to the FTP, then tell it to do a ssl connection (AUTH SSL), and I would guess I then need to make a new connection - something like:

TcpClient client = new TcpClient(FtpServer, FtpPort);
SslStream sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
try
{
    sslStream.AuthenticateAsClient("foobar");
}
catch (AuthenticationException e)
{
    MessageBox.Show("Authentication failed - closing the connection.");
    client.Close();
    return;
}

Taken from msdn. I keep dying on handshake failed due to unexpected packet format (which I've tried googling, but all say it's because the author has connected to a wrong port), which I take as: The connection is not ssl until AUTH SSL is send to it. So my question is, how would i go about making this a "hybrid" connection so I can make an SSL connection to the server?

Any help is greatly appreciated!

© Stack Overflow or respective owner

Related posts about c#

Related posts about ssl