【发布时间】:2016-09-16 04:34:12
【问题描述】:
我花了几个小时试图让 .NET FtpWebRequest 库使用 vsftpd over SSL 与我的 Ubuntu 16.04 FTP 服务器通信。
无论我尝试什么,我总是以异常“对 SSPI 的调用失败。收到的消息是意外的或格式错误。”
我尝试生成客户端和服务器证书,将它们安装在 Windows 中,使用 .NET 中的 X509 类加载它们,切换各种客户端和服务器端选项。无论我做什么,它总是同样的错误。我相信这与我的证书没有得到权威机构的验证有关。以下是我的基本问题:
1) .NET 可以只接受可疑证书吗?! 30种不同的安装方式好像都没有影响?
2) “调用 SSPI 失败”的真正含义是什么?我读过相互矛盾的答案。我通过 FileZilla 连接 TLS/SSL 没有问题,但 .NET 4.5 就没有它。
3) 谁能给出最少的步骤,让使用 .NET 框架的 Windows 7 客户端连接到使用 vsftpd over SSL 的 Linux 服务器?我坚信问题出在我的 Windows/.NET 设置上,因为我的 Windows 机器上的 FileZilla 连接没有问题。
提前谢谢你。
【问题讨论】:
-
你能分享你的c#代码吗?
-
尝试连接到here 列出的 ftps 服务器。您可以通过添加以下代码
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);和对应的方法public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }来绕过服务器证书验证 -
我使用了委托{ return true; } 对于 ServerCertificateValidationCallback 成员。此时,我认为由于证书的主机名与客户端请求的服务器不匹配,因此调用失败。我还没有花时间对此进行调查。
-
我最终通过我的 SSH 库使用 SFTP,使用开发 SSL 证书没有问题。我还让 MySQL 和 .NET 使用开发 SSL 证书进行通信。我会重申,FileZilla 在我连接时会愉快地提示我接受证书。实际上只是这个 .NET FTP 库与无法通过 RCA 验证的 SSL 证书无关。
-
很好的研究。你现在让我很好奇,所以我将尝试使用开发证书设置 IIS FTPS 服务器,看看是否可以使其与 .NET FTP 客户端一起使用。
标签: c# ssl ftpwebrequest ftps vsftpd