válido validación una tls solicitud según seguro remoto relacion puede pudo procedimiento para net información establecer crear consumir confianza con certificado canal autoridad authenticationexception anulada adicional c# .net ssl ftp webrequest

c# - validación - WebRequest usando SSL



no se puede crear un canal seguro ssl/tls c# (2)

Tengo el siguiente código para recuperar un archivo usando FTP (que funciona bien).

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(svrPath); request.KeepAlive = true; request.UsePassive = true; request.UseBinary = true; request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(uname, passw); using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) using (Stream responseStream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(responseStream)) using (StreamWriter destination = new StreamWriter(destinationFile)) { destination.Write(reader.ReadToEnd()); destination.Flush(); }

Sin embargo, cuando intento hacer esto usando SSL, no puedo acceder al archivo, como se muestra a continuación:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(svrPath); request.KeepAlive = true; request.UsePassive = true; request.UseBinary = true; // The following line causes the download to fail request.EnableSsl = true; request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(uname, passw); using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) using (Stream responseStream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(responseStream)) using (StreamWriter destination = new StreamWriter(destinationFile)) { destination.Write(reader.ReadToEnd()); destination.Flush(); }

¿Alguien puede decirme por qué esto último no funcionaría?

EDITAR:

Obtengo la siguiente excepción:

The remote server returned an error: (530) Not logged in.


Pruebe esta solicitud FtpWebRequest = (FtpWebRequest) FtpWebRequest.Create (svrPath);


¿Dónde valida el certificado SSL? Hacer SSL a través de una conexión FTP no es tan simple como configurar la propiedad .EnableSsl . Debe proporcionar un método de validación de certificado. Consulte este artículo para obtener el código C # para hacer lo que quiera. Además, alguien copió y pegó toda su clase de FTP en este artículo de MSDN si necesita una implementación más detallada.

Solo para ponerlo rápidamente en funcionamiento rápidamente, pruebe con esto:

if (request.EnableSsl) ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

y luego más tarde:

public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; // Read the links provided above for real implementation }