Mostrando entradas con la etiqueta TLS. Mostrar todas las entradas
Mostrando entradas con la etiqueta TLS. Mostrar todas las entradas

miércoles, septiembre 23, 2009

Server certificate rejected by ChainVerifier

En ocasiones, los servidores FTPS firman sus propios certificados. Esto implica que SAP no será capaz de dar por bueno el certificado, mostrando el siguiente mensaje de error:



Para hacer que SAP acepte el certificado deberemos seguir los siguientes pasos:

1º Añadir el certificado del cliente al directorio de certificados de confianza (TrustedCAs) mediante el SAP J2EE Visual Administrator, tal como dice la nota SAP 821267.

2º Una vez importado el certificado, el siguiente paso consiste en asociar la dirección IP del servidor FTP al nombre canónico que se especifica en el certificado. Esta es una manera de validar que el certificado viene de quien se espera que venga. En mi caso, para realizar las pruebas de conexión utilicé el cliente FTP "curl" y para acceder al servidor ponía su dirección IP (12.34.567.89). Esto hacía que no coincidiera con la dirección que especificaba el certificado ("ServidorFTP"), tal como reflejan los mensajes informativos que aparecían al establecer la comunicación:



Al añadir la entrada correspondiente en el fichero HOST, podremos acceder con éxito utilizando el nombre  común ("ServidorFTP"):



Lo que para "curl" es un simple aviso, para SAP es determinante y si no coinciden no dejará acceder. Así que la dirección "ServidorFTP" es la que tendremos que especificar en el adaptador FTP para que SAP acepte el certificado con éxito.

server_ftps

Enlaces de referencia:

      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.