OpenSSL: SessionTicket TLS problema di estensione
-
28-09-2019 - |
Domanda
Sto usando un'applicazione che utilizza OpenSSL per lato client TLS. Noi aggiornare la versione OpenSSL da 0.9.8e a 0.9.8k. E poi TLS non funziona ...
spettacoli Wireshark che la nuova versione (con OpenSSL 0.9.8k) invia il pacchetto client ciao con estensione SessionTicket -. E le risponde lato server con un errore fatale
La versione precedente invia un pacchetto ciao quasi identico, ma senza l'ext SessionTicket.
Quando ho sostituito con TLSv1_client_method SSLv23_client_method, tutto ha funzionato bene - il pacchetto client ha inviato ciao era uno SSLv2 uno (Nella sniffer) senza alcuna estensione
(come non era TLS ma SSL?)C'è un modo migliore per disattivare l'estensione o per risolvere il problema in un altro modo?
Grazie in anticipo, rursw1
Soluzione
Quota da RFC 5077: “Si noti che la codifica di un prolungamento SessionTicket vuoto era ambiguo in RFC 4507. Un RFC 4507 attuazione può essere codificato come:
00 23 Extension type 35
00 02 Length of extension contents
00 00 Length of ticket
o può essere codificato allo stesso modo come questo aggiornamento:
00 23 Extension type 35
00 00 Length of extension contents
Un server che desiderano supportare RFC 4507 client dovrebbe rispondere a un estensione SessionTicket vuoto codificato allo stesso modo come ricevuto. “ Quindi il server ho lavorato con supporti RFC 4507 e non il più recente 5077.
La rimozione 'normalmente' utilizzando SSL_CTX_set_options con SSL_OP_NO_TICKET risolto il problema.
Spero che questo vi aiuterà qualcuno ...
EDIT: Beh, questo può essere fatto anche con il flag di configurazione -no-tlsext. (Quando si esegue la Configurazione script perl). Ma, attenzione che in OpenSSL 0.9.8n e OpenSSL 1.0.0, sarà necessario commentare alcune parti del codice sorgente o non si compila - come la rinegoziazione sicuro (che è considerato essere pericoloso per sé) richiede esso.