martes, junio 16, 2009

Cliente FTP multiprotocolo y multiplataforma

En ocasiones, existen servidores FTP que hacen uso del protocolo TLS. Esto requiere configurar de la manera adecuada el firewall tras el que se encuentra el servidor XI para que se pueda conectar de manera correcta con dicho servidor FTP.

Para comprobar si el firewall estaba bien configurado, busqué un cliente FTP multiprotocolo disponible para varios sistemas operativos (UNIX, AIX, Linux, Windows,...) de manera que me permitiera realizar una prueba de conexión desde un equipo, en mi caso con Windows, exterior a la red y, una vez logrado conectar con el servidor FTP, reproducir los mismos comandos, pero esta vez desde el cliente FTP instalado en el servidor XI.

El cliente utilizado fue el Curl y el enlace de descarga es http://curl.haxx.se/download.html (recomiendo usar el wizard de descarga para obtener la últiva versión: http://curl.haxx.se/dlwiz/).

El cliente funciona por comandos. En Windows no necesita instalación, basta descomprimir el archivo en una carpeta local y seguidamente ejecutar los comandos. La versión que utilicé fue la curl-7.19.5-ssl-sspi-zlib-static-bin-w32.zip.

El servidor FTP requería:
  • Protocolo: TLS
  • Puerto: 990
  • Conexión: pasiva

    Para las pruebas de conexión basta con que funcione algunos de los siguientes comandos:

    Comandos que muestran el contenido de la carpeta raíz del servidor de pruebas:

    C:\curl>curl -k -u <user>:<pass> --ftp-ssl -1 ftp://ftp.server.com:990

    C:\curl>curl -k -u <user>:<pass> --ftp-ssl-reqd -1 ftp://ftp.server.com:990

    C:\curl>curl -k -u <user>:<pass> --ftp-pasv --ftp-ssl -1 ftp://ftp.server.com:990


    Resultado:

    drwxrwxr-x   5 (?)      (?)          4096 Mar 31 13:14 dir

    Comandos que muestran un listado del directorio /DIR/:

    C:\curl>curl -k -u <user>:<pass> --ftp-pasv --ftp-ssl -1 ftp://ftp.server.com:990/dir/

    Resultado:

    drwxrwxr-x   2 (?)      (?)          4096 Jun  8 16:27 input
    drwxrwxr-x   2 (?)      (?)          4096 Jun  8 16:28 output



    A continuación indico el significado de las opciones utilizadas:

    -k/--insecure
    (SSL) This option explicitly allows curl to perform "insecure" SSL connections
    and transfers. All SSL connections are attempted to be made secure by using the
    CA certificate bundle installed by default. This makes all connections considered
    "insecure" fail unless -k/--insecure is used.

    -u/--user <user:password>
    Specify the user name and password to use for server authentication. Overrides
    -n/--netrc and --netrc-optional.
    If you just give the user name (without entering a colon) curl will prompt for
    a password.
    If you use an SSPI-enabled curl binary and do NTLM authentication, you can
    force curl to pick up the user name and password from your environment by simply
    specifying a single colon with this option: "-u :".
    If this option is used several times, the last one will be used.

    --ftp-ssl
    (FTP) Try to use SSL/TLS for the FTP connection. Reverts to a non-secure
    connection if the server doesn’t support SSL/TLS. See also --ftp-ssl-control and
    --ftp-ssl-reqd for different levels of encryption required. (Added in 7.11.0)

    --ftp-ssl-reqd
    (FTP) Require SSL/TLS for the FTP connection. Terminates the connection if the
    server doesn’t support SSL/TLS. (Added in 7.15.5)

    -1/--tlsv1
    (SSL) Forces curl to use TLS version 1 when negotiating with a remote TLS server.


    Lo único que falta es probar que estos mismos comandos funcionan desde el servidor de XI con la configuración actual del firewall.

    1 comentario:

    Server certificate rejected by ChainVerifier « Tykall’s Weblog dijo...

    [...] espera que venga. En mi caso, para realizar las pruebas de conexión emplee el cliente FTP “curl” y a para acceder al servidor ponía su dirección IP (12.34.567.89). Esto hacía que no [...]