Требуется ли для подключения TLS FtpWebRequest сертификат клиента? - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь создать 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 голосов
/ 15 ноября 2018

Сертификат клиента - это способ аутентификации (в качестве альтернативы или дополнения к паролю). Вам это нужно только, если ваш сервер FTPS требует аутентификации с помощью сертификата клиента Это похоже на аутентификацию с закрытым ключом в SSH.

По моему опыту, клиентские сертификаты используются очень редко. Если бы вам это было нужно, вы бы знали. И, как правило, у вас не будет пароля (хотя возможно, хотя и реже, вам понадобится и пароль, и клиентский сертификат для аутентификации).

Так что обычно для использования FTPS (FTP через TLS / SSL) все, что вам нужно:

ftpRequest.EnableSsl = true;
...