我正在从Windows Server 2008 R2连接到运行vsFTPd 2.0.7的Linux FTP服务器。我正在通过SSL连接。
这是它失败的代码行:
sslStream = new SslStream(stream, false, CertificateValidation);
这是日志:
220 (vsFTPd 2.0.7)
AUTH SSL
234 Proceed with negotiation.
我收到以下错误:
System.IO.IOException: The handshake failed due to an unexpected packet format.
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at KellermanSoftware.NetFtpLibrary.ProxySocket.InitSsl()
at KellermanSoftware.NetFtpLibrary.FTP.Connect(Boolean implicitConnection)
最佳答案
从我的Google搜索看来,这是vsftpd的常见问题。
http://www.question-defense.com/2010/02/04/vsftpd-error-gnutls-error-9-a-tls-packet-with-unexpected-length-was-received
您可以查看该文章以获取解决方案的提示
归结为:
更新
其他需要检查的是:http://ftps.codeplex.com/Thread/View.aspx?ThreadId=63605
该线程使用以下代码块示例讨论隐式和显式模式之间的区别:
private Stream GetDataStream()
{
Stream s = null;
if (SslSupportCurrentMode == ESSLSupportMode.Implicit)
{
s = dataClient.GetStream();
}
else if ((sslSupportCurrentMode & ESSLSupportMode.DataChannelRequested) == ESSLSupportMode.DataChannelRequested)
{
if (dataSslStream == null)
dataSslStream = CreateSSlStream(dataClient.GetStream(), false);
s = dataSslStream;
}
else
{
s = dataClient.GetStream();
}
return s;
}
关于ftp - 如何修复: The handshake failed due to an unexpected packet format?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2456786/