Fondamentalmente significa che il parser SSL è stato perso. Il livello socket ha passato alcuni byte che non si adattano al protocollo SSL.
Quando si trasmette utilizzando un socket SSL, chiama una routine di formattazione e crittografia per creare il pacchetto crittografato. Quindi chiama il livello dei socket semplici per trasferire il pacchetto crittografato sul server. Il livello di socket del server riceve il pacchetto e quindi chiama il pacchetto SSL per decodificare il pacchetto. Se il pacchetto non si adatta al formato SSL, si ottiene l'eccezione di versione non supportata.
Tutti i byte che arrivano al livello socket vengono inviati al pacchetto SSL. Quindi il modo più semplice per ottenere quell'errore è usare il livello dei socket semplici per trasmettere un messaggio di testo in chiaro dopo aver stabilito la connessione SSL.
Nel mio caso particolare, mi sono imbattuto in questo messaggio di errore perché stavo trasmettendo byte extra. Vediamo se riesco a spiegare chiaramente il mio errore.
Avevo un buffer che era (ad esempio) 100 byte. Ho inserito il buffer con il mio messaggio da 50 byte e ho chiamato la procedura di crittografia SSL. Il pacchetto risultante era lungo 75 byte. Ho chiamato send() per trasmettere il buffer. Questo è stato un invio di prese semplici; ha fatto quello che gli ho detto di fare, che trasmetteva l'intero buffer da 100 byte.
Al server, sono stati ricevuti gli interi 100 byte. Il pacchetto SSL ha provato a decodificare il pacchetto. Ha trovato un messaggio SSL perfettamente buono impacchettato nei primi 75 byte che sono stati ricevuti. Fin qui tutto bene. Poi ha cercato di capire cosa significassero i restanti 25 byte. Asserì che era un SECONDO messaggio SSL e provò a decrittarlo. Fu allora che soffocò e buttò fuori quella brutta eccezione.
Spero che ti dia qualche indizio su cosa cercare nel tuo codice.