Sto lavorando su un'applicazione desktop Windows che viene creata usando C ++ (IDE: Qt creator). Ha un pannello di login, dove faccio la convalida dell'utente tramite la connessione https usando la libreria 1.0 di openssl. L'applicazione funziona nella maggior parte delle macchine, ma sto riscontrando anche un errore "SSL Handshake failed" durante l'esecuzione della connessione https da poche macchine.
Ho provato a eseguire il debug dell'errore utilizzando wireshark. La mia osservazione è la seguente:
1) Il client invia [SYN] al server.
2) Il server invia [SYN, ACK] al client.
3) Il client invia [ACK] al server.
4) Il client invia il messaggio "Client Hello" al server.
5) Il server invia la sua chiave pubblica con il messaggio "Server Hello, Certificate, Server Hello Done"
6) Il client invia la sua chiave pubblica con il messaggio "Scambio chiavi client, Modifica specifiche cifrario, Messaggio crittografato di handshake"
7) Il server invia un messaggio di handshake crittografato con il messaggio "Modifica specifiche cifrario, messaggio crittografato di handshake"
8) Il client invia [FIN, ACK]
9) Il server invia [FIN, ACK]
10) Il client invia [FIN]
In 7a fase, non appena il client riceve il messaggio crittografato dal server, il client avvia la chiusura dell'handshake tramite il segnale FIN. Qualche idea, perché il client abbatte la connessione ssl con "SSL handshake failure" dopo che entrambe le parti hanno scambiato le chiavi?