Я пытаюсь загрузить файл на FTP-сервер, и мне нужно использовать сертификат клиента для аутентификации, а не имя пользователя и пароль.Есть ли способ использовать FtpWebRequest для аутентификации на FTP с использованием клиентских сертификатов на C#?
var fullFtpPath = String.Concat(ftpItem.FtpAddress, "/", record, ".txt");
FtpWebRequest request = (FtpWebRequest) WebRequest.Create(fullFtpPath);
request.Credentials = new NetworkCredential(ftpItem.Username, ftpItem.Password);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UseBinary = true;
request.UsePassive = ftpItem.UsePassive;
request.EnableSsl = ftpItem.UseSSL;
request.ContentLength = bytes.Length;
using(Stream s = request.GetRequestStream()) {
s.Write(bytes, 0, bytes.Length);
}
FtpWebResponse response = (FtpWebResponse) request.GetResponse();
Debug.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
db.LogExport(siteId, fullFtpPath, record, true, response.StatusDescription);
response.Close();
Выше мой текущий код, но я не уверен, как осуществить проверку подлинности сертификата или, если это вообще возможно, чтобы сделать это. Мне нужно создать сертификат? Или сервер предоставит мне сертификат, и я просто установлю его в моем запросе?
Развейте вопрос, строка индивидуального кода, я должен создать его? Сертификат, который я ищу в магазине, выдается сервером, к которому я пытаюсь подключиться? и нужно ли мне имя пользователя, даже если я использую аутентификацию сертификата? – FurqanRauf
Как правило, вы создаете сертификат и предоставляете администратору сервера свой открытый ключ, или если это сертификат, подписанный CA, вам может и не понадобиться его предоставлять. Или вы отправляете запрос на подпись сертификата администратору сервера. Есть много вариантов. Это немного выходит за рамки вашего вопроса. Вам лучше спросить новый. Или сделать некоторые исследования. Что касается имени пользователя: я считаю, что обычно вам нужно использовать имя пользователя. Я могу представить, что имя пользователя может не понадобиться, но я еще не видел такой настройки. –