Ошибка FtpWebRequest EnableSSL

Я получаю сообщение «Удаленный сертификат недействителен в соответствии с процедурой проверки» сообщение об исключении со следующим кодом:

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(MyCertValidationCb);

var request = (FtpWebRequest)WebRequest.Create(new Uri(myUri));
request.EnableSsl = true;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.BeginGetRequestStream(EndGetStreamCallback, _state);


public static bool MyCertValidationCb(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    if ((sslPolicyErrors & SslPolicyErrors.RemoteCertificateChainErrors)
              == SslPolicyErrors.RemoteCertificateChainErrors)
    {
        return false;
    }
    if ((sslPolicyErrors & SslPolicyErrors.RemoteCertificateNameMismatch)
        == SslPolicyErrors.RemoteCertificateNameMismatch)
    {
        Zone z;
        z = Zone.CreateFromUrl(((FtpWebRequest)sender).RequestUri.ToString());
        if (z.SecurityZone == SecurityZone.Intranet
            || z.SecurityZone == SecurityZone.MyComputer)
        {
            return true;
        }
        return false;
    }
    return false;
} 

FTP-сервер - filezilla. FTP через SSL включен, а также разрешен явный FTP через TLS. Я создал файл certificate.crt. Подключился к ftp-серверу с помощью клиента filezilla и во всплывающем окне установил флажок «Всегда доверять этому сертификату».

В методе MyCertValidationCb (sslPolicyErrors & SslPolicyErrors.RemoteCertificateChainErrors) == SslPolicyErrors.RemoteCerrors всегда.

Если я изменю MyCertValidationCb так, чтобы он всегда возвращал истину, запрос ftp будет выполнен без проблем. Я уверен, что проблема с сертификатами. У кого-нибудь есть идеи?

1
задан Brian T 7 September 2010 в 22:14
поделиться