FtpWebRequest TLS连接是否需要客户端证书?

时间:2018-11-15 13:38:17

标签: c# ftp client-certificates ftpwebrequest ftps

我正在尝试使用FTPRequest创建一个FtpWebRequest来将报告文件发送到我的服务器。但是我不了解SSL / TLS连接。

我正在使用的服务器接受TLS连接。因此,仅设置EnableSsl = true就足够了吗?还是我需要客户证书?

如果我只是将EnableSsl设置为true,则接受连接并发送文件。

ftpRequest = (FtpWebRequest)WebRequest.Create(url);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = false;
ftpRequest.Proxy = null;
ftpRequest.Credentials = new NetworkCredential(username, password);

如果我想要TLS / SSL:

ftpRequest.EnableSsl = true;
X509Certificate cert = X509Certificate.CreateFromCertFile(filePath);

X509CertificateCollection certCollection = new X509CertificateCollection { cert };

ftpRequest.ClientCertificates = certCollection;

如果我设置了证书并尝试连接,则服务器不会响应,也不会给我任何异常。
我真的需要证书吗?我不知道证书在连接方面是否有所不同。证书的目的是什么?

谢谢

1 个答案:

答案 0 :(得分:1)

客户端证书是一种身份验证方式(作为密码的替代或补充)。仅当FTPS服务器需要使用客户端证书的身份验证时,才需要它。这类似于在SSH中使用私钥进行身份验证。

根据我的经验,很少使用客户端证书。如果您需要它,您就会知道。通常,您将没有密码(尽管有可能,虽然需要密码和客户证书来进行身份验证,但更罕见),

通常,要使用FTPS(基于TLS / SSL的FTP),您需要做的是:

ftpRequest.EnableSsl = true;