es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo resolver una SOAPFaultException con Hostnameverifier socket reset por mensaje de error TTL?

He construido correctamente un cliente y un servidor (Jetty) en localhost. Esto significa que he lanzado el servidor Jetty (https://localhost:8444/ws) y he ejecutado el cliente localmente en la misma máquina y todo el proceso de conexión funcionó perfectamente.

Cuando el cliente y el servidor se ejecutan en máquinas diferentes, se recibe el siguiente mensaje de error:

Causado por: java.lang.RuntimeException: Socket reset for TTL
at org.apache.cxf.transport.https.HttpsClient.DefaultHostnameVerifier.verify(DefaultHostnameVerifier.java:98)
at sun.net.www.protocol.https.HttpsClient.checkURLSpoofing(Https.Client.java:641)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Https.Client.java:573)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
...

Actualización: en respuesta a la pregunta de Stefan D: Al separar el cliente y el servidor entre sí, me refiero simplemente a mover el archivo WAR a otro host de Linux con la dirección IP XXX.YYY.ZZZ.abc y el cliente a otro host de Linux con la dirección IP XXX.YYY.ZZZ.def.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución al mensaje de error al ejecutar el cliente y el servidor en máquinas diferentes

    El mensaje de error sugiere que puede haber un problema con la verificación del certificado SSL, que es un aspecto crucial para asegurar la comunicación a través de HTTPS. Este problema puede ser causado por el proceso de verificación del nombre de host, donde el cliente verifica que el host con el que está comunicándose es el mismo al que intentaba conectarse.

    Para solucionar este problema, podemos seguir los siguientes pasos:

    1. Verificar el certificado SSL: Asegurarse de que el certificado SSL utilizado en el servidor sea válido y emitido por una Autoridad de Certificación de confianza (CA). Si el certificado es autofirmado o ha caducado, es posible que el cliente lo rechace y genere el mensaje de error.
    2. Configurar el cliente CXF: Asegurarse de que la configuración del cliente CXF esté correctamente establecida para confiar en el certificado SSL del servidor. Esto incluye especificar los archivos de almacén de confianza y de almacén de claves correctos, y verificar que el Nombre Común (CN) del certificado coincida con el nombre de host del servidor.

    3. Verificar el nombre de host: A veces, el problema puede ser que el nombre de host del servidor no coincida con el nombre de host en el certificado. Asegurarse de que el nombre de host del servidor coincida con el campo subjectAltName del certificado.

    4. Abrir los puertos requeridos: Asegurarse de que el servidor esté escuchando en el puerto correcto y que el cliente esté intentando conectarse al puerto correcto. Verificar que no haya restricciones de firewall o acceso a la red que puedan bloquear la comunicación entre el cliente y el servidor.

    Siguiendo los pasos anteriores, podemos configurar el cliente y el servidor para comunicarse exitosamente a través de HTTPS en máquinas diferentes.

Comments are closed.