¿Por qué el servidor FIN'ing después de iniciar la sesión TLS?

¿Por qué el servidor FIN'ing después de iniciar la sesión TLS?

El servidor TLS está haciendo algo que no entiendo.

  1. El protocolo de enlace TCP se ejecuta normalmente.
  2. SSL Client Hello se ejecuta normalmente.
  3. Hola del servidor SSL parece normal. Proporciona certificado, dice Servidor Hola Hecho.
  4. La disección muestra los problemas del cliente "Intercambio de claves del cliente, cambio de especificación de cifrado, mensaje de protocolo de enlace cifrado"
  5. La disección muestra problemas del servidor "Cambiar especificación de cifrado" y luego "Mensaje de protocolo de enlace cifrado"

El cliente ahora confirma y comienza a enviar datos. Pero los ACK del servidor envían una "alerta cifrada" y FIN sale.

Esto sucedió justo después de intercambiar certificados. El certificado presentado en el protocolo de enlace SSL es la nueva clave.

¿Alguien tiene alguna pista?

Respuesta1

Probablemente se deba a un problema de SNI con el cliente o con algún dispositivo intermedio, como un equilibrador de carga. El dispositivo de equilibrio de carga debe poder presentar el nombre del servidor al host backend como parte del saludo inicial del cliente. verhttps://en.m.wikipedia.org/wiki/Server_Name_Indication

Respuesta2

El paquete más importante es la "Alerta cifrada", ya que contiene el motivo por el que se cierra la conexión.

Parece ser un error de validación. Esto significa que el certificado no es confiable o no es válido. Pero la verdadera razón es enviar a través delProtocolo de alerta TLS

Respuesta3

Me encontré con un problema similar en pure-ftpdmodo TLS explícito (servidor FTPS).

En mi caso, sin embargo, huboNo Encrypted Alertenviado desde el servidor; simplemente se encontró inmediatamente después del intercambio de claves ( Change Cipher Spec, Finishedmensaje del servidor → FIN del servidor). Próximo,el clienteenvió el Encrypted alertcódigo 0 de nivel 1 Close Notify(que se espera, a diferencia del servidor FIN).

Esto sucedió solo con un único cliente específico (el firmware de un dispositivo) y no se reprodujo con otros clientes ftps.

No he desenterrado la raíz del problema, pero sospecho que llegamos a un puntoerror del servidor. pure-ftpdutiliza un modelo de bifurcación por conexión similar a Apache; y observéel proceso hijo fallaen gdb (saliendo con el código -1), lo que, por supuesto, lleva al sistema operativo a cerrar el socket FD y enviar FIN.

Una razón más para decir que en mi caso es un error del servidor: el comportamiento dejó de reproducirse tan pronto como cambiamos el servidor ftps por una implementación diferente proftpd.


No creo que esto coincida con el caso de OP (allí, el servidor finaliza la conexión de forma apropiada para TLS, con alerta cifrada), pero, sin embargo, es algo a considerar para cualquiera que acceda a esta página.

información relacionada