por lo que yo sé la versión actual (.NET 2.0 y 3.5) de FtpWebRequest sólo admite SSL explícito.
En realidad, NET 2.0 actualmente no soporte SSL implícito, explícito única. Consideraremos agregar esto para una futura versión de .
JonCole - MSFTModerator en MSDN forum post
Si es necesario utilizar tanto Implict y explícita TLS/SSL que tiene que probar uno de los componentes FTP/SSL de terceros. El siguiente código utiliza nuestro Rebex FTP/SSL y está tomado del tutorial page.
explícita TLS/SSL
cliente se conecta al servidor de FTP de una manera no protegida de costumbre, por lo general para el puerto 21 se le asignó el protocolo FTP. Cuando se desea proteger la conexión mediante SSL, se inicializa una negociación de SSL, se asegura la conexión de control y se protegen todas las comunicaciones siguientes.
// 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);
La protección explícita significa que es posible asegurar la conexión en cualquier momento. Si no sabe si necesitará la protección no en el momento de la conexión, es posible que desee conectarse utilizando el protocolo FTP ordinario sin cifrar y asegurar la conexión más adelante.
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);
protección SSL implícito de la sesión FTP protocolo
FTPS fue asignado originalmente un puerto separado por la IANA. Tras la conexión a este puerto, una negociación SSL comienza de inmediato y la conexión de control está asegurada. Todas las conexiones de datos también están aseguradas implícitamente de la misma manera. Esto es similar al enfoque utilizado por HTTPS.
Este enfoque no es favorecido por el IETF y está en desuso. Es compatible con Rebex FTP/SSL para la interoperabilidad con servidores más antiguos, pero se recomienda encarecidamente usar la protección explícita siempre que sea posible.
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);
Usted puede descargar el componente a rebex.net/ftp-ssl.net/
aprecio el puesto, a pesar de que parece ser un conflicto de intereses ... ya que representa el componente que está empujando. – PortageMonkey
Entiendo su preocupación. Sin embargo, parece que el consenso actual aquí es que mencionar el propio producto es éticamente correcto siempre que se proporcione una divulgación completa. Incluso cambié mi sobrenombre para asegurarme de que mi sesgo no se pasa por alto ;-). Puede encontrar interesantes enlaces siguientes en meta.stackoverflow sobre este tema: http://meta.stackexchange.com/questions/15787/is-it-bad-etiquette-to-mention-your-own-products-in-a- stackoverflow-answer y http://meta.stackexchange.com/questions/20031/vendors-on-stackoverflow. Creo que está bien siempre y cuando la respuesta sea válida y la identidad no esté oculta. –