Estoy trabajando en la aplicación de escritorio de Windows que se crea utilizando C ++ (IDE: creador de Qt). Tiene un panel de inicio de sesión, donde hago la validación del usuario a través de la conexión https usando la biblioteca openssl 1.0. La aplicación funciona en la mayoría de las máquinas, pero también estoy experimentando el error "SSL Handshake failed" al hacer la conexión https desde pocas máquinas.
Intenté depurar el error usando wireshark. Mi observación es la siguiente:
1) El cliente envía [SYN] al servidor.
2) El servidor envía [SYN, ACK] al cliente.
3) El cliente envía [ACK] al servidor.
4) El cliente envía el mensaje "Cliente Hola" al servidor.
5) El servidor envía su clave pública con el mensaje "Servidor Hola, Certificado, Servidor Hola Hecho"
6) El cliente envía su clave pública con el mensaje "Intercambio de claves del cliente, Cambiar espec. De cifrado, Mensaje cifrado de reconocimiento"
7) El servidor envía un mensaje de protocolo de enlace cifrado con el mensaje "Cambiar espec. De cifrado, mensaje de protocolo de enlace cifrado"
8) El cliente envía [FIN, ACK]
9) El servidor envía [FIN, ACK]
10) El cliente envía [FIN]
En el séptimo paso, tan pronto como el cliente recibe un mensaje cifrado del servidor, el cliente inicia la terminación del protocolo de enlace mediante la señal FIN. ¿Alguna idea, por qué el cliente desmonta la conexión ssl con "SSL handshake failure" después de que ambas partes intercambian las claves?