wie verwenden Sie FTP, SSL c#?
Indem mit dem folgenden code, My-client-Anwendung wird die Verbindung auf den Gesicherten FTP-Server und drücken Datei, bis es erfolgreich. Denken Sie, dass der folgende Ansatz ist immer noch so dass die Sicherheitslücke durch die Annahme alle Zertifikate. Wenn ja, kann mir jemand helfen, pass das spezifische Zertifikat vom client habe ich auf dem FTP-server.
public bool UploadFile(string FileName)
{
string ftpServerIP = FTPServer;
string ftpUserID = FTPUser;
string ftpPassword = FTPPwd;
FileInfo fileInf = new FileInfo(FileName);
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
FtpWebRequest reqFTP;
//Create FtpWebRequest object from the Uri provided
reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri); //new Uri("ftp://" + ftpServerIP + DestinationFolder + fileInf.Name));
//Enable SSL
reqFTP.EnableSsl = true;
//Provide the WebPermission Credintials
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
//By default KeepAlive is true, where the control connection is not closed after a command is executed.
reqFTP.KeepAlive = false;
//reqFTP.UsePassive = true;
//Specify the command to be executed.
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
//SSL Certificate
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
//Specify the data transfer type.
reqFTP.UseBinary = true;
//Notify the server about the size of the uploaded file
reqFTP.ContentLength = fileInf.Length;
//The buffer size is set to 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
//Opens a file stream (System.IO.FileStream) to read the file to be uploaded
FileStream fs = fileInf.OpenRead();
try
{
//Stream to which the file to be upload is written
Stream strm = reqFTP.GetRequestStream();
//Read from the file stream 2kb at a time
contentLen = fs.Read(buff, 0, buffLength);
//Till Stream content ends
while (contentLen != 0)
{
//Write Content from the file stream to the FTP Upload Stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
//Close the file stream and the Request Stream
strm.Close();
fs.Close();
return true;
}
catch (Exception ex)
{
return false;
}
}
public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}
- irgendwelche Vorschläge, bitte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Vorschlag zu betrachten, der ServicePointManager.ServerCertificateValidationCallback
Hier ist ein blog-posting, die Adressen Secure FTP und nutzt diese Methode
Wenn Sie das Vertrauen der FTP-server, mit dem Sie das hochladen Ihrer Daten auf, dann sehe ich keine wirklichen Probleme mit der Umgehung des server-Zertifikat-überprüfung. Allerdings, Wenn Sie wollen, überprüfen Sie das server-Zertifikat von dem FTP-server, dann finden Sie den link, curtisk gepostet, dass enthält ein Beispiel, wie die überprüfung eines server-Zertifikats.