Я пытаюсь понять, как работает SSL. В своем желании сделать небольшой FTP-клиент, который поддерживает SSL я столкнуться с некоторыми проблемами:Исходный FTP-протокол SSL с C#
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 является просто FtpWriter.WriteLine (текст); FtpWriter.Flush(); функция.
Моя «проблема» заключается в следующем: сначала мне нужно сделать (не-ssl) соединение с FTP, а затем сказать ему сделать ssl-соединение (AUTH SSL), и я бы предположил, что мне тогда нужно сделать новое подключение - что-то вроде:
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;
}
Взято из msdn. Я продолжаю умирать, когда рукопожатие потерпело неудачу из-за неожиданного формата пакета (который я пробовал искать в Google, но все говорят, что это связано с тем, что автор подключился к неправильному порту), который я принимаю как: Соединение не ssl, пока не будет отправлен AUTH SSL к нему. Итак, мой вопрос: как мне сделать это «гибридное» соединение, чтобы я мог сделать SSL-соединение с сервером?
Любая помощь очень ценится!