Sto cercando di vedere il bug che non ha problemi in azione con la mia applicazione server OpenSSL.
Il mio server utilizza la libreria OpenSSL - openssl-1.0.1b
Mi collego con successo a s_client (openssl-1.0.1b) al mio server. L'SSL Handshake è finito.
Ora, digito "B" per inviare un Heartbeat crittografato al server. Ma il server chiude la connessione con Alert. S_client scarica le seguenti informazioni:
HEARTBEATING
TLS 1.0 [length 0025], HeartbeatRequest
Routine SSL: SSL3_READ_BYTES: sslv3 alert bad record mac: s3_pkt.c: 1256: numero di avviso SSL 20
Tuttavia, se dovessi digitare altri dati, questi vengono trattati come dati dell'applicazione e vengono elaborati dal mio server.
Un'altra cosa da notare è che lo stesso s_client scambia con successo gli heartbeat con www.yahoo.com
Perché il mio server non può accettare il messaggio heartbeat anche se nel server ciao ha detto che supporta quell'estensione?
Modifica (Update)
Una cosa che non avevo realizzato era che la libreria SSL era in realtà TurboSSL, la porta di Cavium di OpenSSL per usare l'accelarator dell'hardware. Con questo vedo l'errore che ho citato.
Quando uso la semplice libreria OpenSSl, ha funzionato bene !. Gli heartbeat venivano inviati dal server.