pour autant que je sais que la version actuelle (.NET 2.0 et 3.5) de FtpWebRequest ne supporte que SSL explicite.
Actuellement, .NET 2.0 ne prend actuellement pas en charge le protocole SSL implicite, uniquement explicite. Nous envisagerons d'ajouter ceci pour une future version .
JonCole - MSFTModerator à MSDN forum post
Si vous devez utiliser à la fois Implict et explicite TLS/SSL, vous devez essayer un des composants tiers FTP/SSL. Le code suivant utilise notre Rebex FTP/SSL et provient du tutorial page.
Explicite TLS/SSL
Le client se connecte au serveur FTP de manière habituelle non protégée, généralement sur le port 21 a été affecté au protocole FTP. Lorsque l'on souhaite protéger la connexion à l'aide de SSL, une négociation SSL est initialisée, la connexion de contrôle est sécurisée et toutes les communications suivantes sont protégées.
// Create an instance of the Ftp class.
Ftp ftp = new Ftp();
// Connect securely using explicit SSL.
// Use the third argument to specify additional SSL parameters.
ftp.Connect(hostname, 21, null, FtpSecurity.Explicit);
// Connection is protected now, we can log in safely.
ftp.Login(username, password);
Une protection explicite signifie qu'il est possible de sécuriser la connexion à tout moment. Si vous ne savez pas si vous aurez besoin de la protection au moment de la connexion, vous pouvez vous connecter en utilisant le protocole FTP non crypté ordinaire et sécuriser la connexion ultérieurement.
Ftp ftp = new Ftp();
// Connect to the server with no protection.
ftp.Connect(hostname, 21);
// Upgrade connection to SSL.
// This method also accepts an argument to specify SSL parameters.
ftp.Secure();
// Connection is protected now, we can log in safely.
ftp.Login(username, password);
protection SSL Implicite de la session FTP
protocole FTPS a été attribué un port séparé par l'IANA. Lors de la connexion à ce port, une négociation SSL démarre immédiatement et la connexion de contrôle est sécurisée. Toutes les connexions de données sont également implicitement sécurisées de la même manière. Ceci est similaire à l'approche utilisée par HTTPS.
Cette approche n'est pas favorisée par l'IETF et est déconseillée. Il est pris en charge par Rebex FTP/SSL pour l'interopérabilité avec les serveurs plus anciens, mais il est fortement recommandé d'utiliser la protection explicite dans la mesure du possible.
Ftp ftp = new Ftp();
// Connect securely using implicit SSL.
// Use the third argument to specify additional SSL parameters.
ftp.Connect(hostname, 990, null, FtpSecurity.Implicit);
// Connection is protected now, we can log in safely.
ftp.Login(username, password);
Vous pouvez télécharger le composant à rebex.net/ftp-ssl.net/
J'apprécie le poste, bien que semble être un conflit d'intérêts ... puisque vous représentez le composant que vous poussiez. – PortageMonkey
Je comprends votre inquiétude. Cependant, il semble que le consensus actuel ici soit que la mention de son propre produit soit éthiquement correcte tant que la divulgation complète est fournie. J'ai même changé mon pseudo pour être sûr que mon biais ne sera pas oublié ;-). Vous pouvez trouver des liens intéressants à meta.stackoverflow en discutant de ce sujet: http://meta.stackexchange.com/questions/15787/is-it-bad-etiquette-to-mention-your-own-products-in-a- stackoverflow-answer et http://meta.stackexchange.com/questions/20031/vendors-on-stackoverflow. Je pense que c'est correct tant que la réponse est valide et que l'identité n'est pas cachée. –