使用SSL将C#FtpWebRequest发送到Ubuntu VSFTPD

问题描述:

我花了几个小时试图让.NET FtpWebRequest库与使用基于SSL的vsftpd与我的Ubuntu 16.04 FTP服务器进行通信。使用SSL将C#FtpWebRequest发送到Ubuntu VSFTPD

无论我尝试什么,我总是以“SSPI调用失败,收到的消息意外或格式不正确为例”。

我已经尝试生成客户端和服务器证书,将它们安装在窗口中,使用.NET中的X509类加载它们,切换各种客户端和服务器端选项。无论我做什么,总会有同样的错误。我相信这与我的证书没有经过权威机构验证有关。这里是我的基本问题:

1).NET只能接受一个可疑的证书吗?!安装它30种不同的方式似乎没有影响?

2)“打电话给SSPI失败”是什么意思?我读过相互矛盾的答案。我没有问题通过FileZilla与TLS/SSL连接,但.NET 4.5不会。

3)有人可以通过使用vsftpd over SSL连接到Linux服务器来让最少量的步骤让Windows 7客户端使用.NET框架吗?我坚信,问题在于我的Windows/.NET设置,因为我的Windows机器上的FileZilla没有连接问题。

预先感谢您。

+0

你可以分享你的C#代码? – sly

+0

尝试连接到列出的ftps服务器[here](http://test.rebex.net/)。您可以通过添加以下代码来绕过服务器证书验证:ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);和相应的方法public static bool ValidateServerCertificate(object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors){return true; }' – sly

+0

我已经使用委托{return true; }为ServerCertificateValidationCallback成员。此时,由于证书的主机名与客户端请求的服务器不匹配,我认为这些调用失败。我还没有花时间对此进行调查。 – AirmanAJK

插入下面的一行在你的vsftpd.conf:

ssl_ciphers=AES128-SHA