【问题标题】:sending file using ftp over ssl in C#, with filezilla server在 C# 中使用 ftp over ssl 发送文件,使用 filezilla 服务器
【发布时间】:2014-03-30 00:12:55
【问题描述】:

我正在尝试使用 C# 中的 ftps 将文件发送到 ftp 服务器。我正在使用 filezilla 服务器在本地进行测试。我已经尝试过只使用常规 ftp(没有 EnableSsl),它工作正常。我已经环顾四周,我正在尝试设置证书,但我无法让它工作。我不断收到错误消息:根据验证程序,远程证书无效。在 filezilla 上,我在设置中使用了他们的“生成证书”并将其保存到桌面。那么我需要用来创建证书的文件是什么?它是生成的一个filezilla吗?如果是这样,它是一个 .crt 文件,所以我无法使用 CreateFromCertFile() 方法..

这是我添加证书的地方

X509Certificate cert = X509Certificate.CreateFromCertFile(pathtofile);
  X509CertificateCollection certCollection = new X509CertificateCollection();
  certCollection.Add(cert);

  request.ClientCertificates.Add(cert);

我有这样的 ftp 请求

 var request = (FtpWebRequest) WebRequest.Create(fullPath);
      request.UseBinary = true;
      request.Method = WebRequestMethods.Ftp.UploadFile;
      request.EnableSsl = true;
 request.KeepAlive = false;
      request.Credentials = new NetworkCredential(username, password);
      request.UsePassive = true;

提前致谢

【问题讨论】:

    标签: c# ssl ftp filezilla


    【解决方案1】:

    如果您的证书是自签名的,您需要告诉ServicePointManager 接受它。

    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
    

    【讨论】:

    • 您可以参考this other answer
    • 将证书添加到本地存储。不要覆盖证书验证
    • @JonBarker 您的方法在形式上更正确,但我的意图只是表明证书由于它是自签名的事实而被拒绝。我应该更清楚地说明这不是生产代码的解决方案,但这就是为什么我添加评论以查看另一个答案,这已经很清楚了。
    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 2023-01-26
    • 2011-09-13
    相关资源
    最近更新 更多