2015-04-21 17 views
5

Ciao vogliono sostenere la versione più dispone di TLS utilizzando SSLV23 metodo sul client side.But io non sono in grado di connettersi ottenere errore:Come potrei supportare più versioni di TLS sul lato client?

SSL23_GET_SERVER_HELLO: SSLv3 stretta di mano di avvertimento dei guasti

Qualcuno può dire come potrei supportare più versioni di TLS usando openssl?

Snippet di codice per SSLV23 (che non funziona)

cctx = SSL_CTX_new(SSLv23_client_method()); 
    if(cctx) { 
    SSL_CTX_set_options(cctx, SSL_OP_NO_SSLv3); 
    } 

per soli TLS V1 (di lavoro)

cctx = SSL_CTX_new(TLSv1_client_method()); 
+0

In che contesto stai utilizzando? – tadman

+0

In realtà vogliamo disattivare sslv3 sul lato client e abilitare i protocolli TLS, ma se il mio server supporterà solo TLS v1.2 o TLS v1.1 o TLS v1, come potrei fornire quella funzionalità sul lato client? – mahan07

+0

perché non usi 'TLSv1_client_method()'? A proposito, lo stesso codice che hai mostrato è risultato nella connessione TLS1.0 nel mio test. – Prabhu

risposta

6

In base alle vostre tag e commenti, presumo si desidera che solo le connessioni TLS. I client devono avviare solo le connessioni TLS. Se è così, perché insisti su SSLv23_client_method? Ma il seguente ha mandato fuori TLS 1.0 client ciao nel mio test:

ctx = SSL_CTX_new(SSLv23_client_method()); 
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3); 

per prevenire attacchi BARBONCINO, la cosa migliore sarebbe per disabilitare completamente il supporto SSL3 sul client e server. Nel tuo caso hai detto che i server supportano solo TLS. Quindi non v'è alcuna necessità per la compatibilità con i client sulla SSL3 Nel caso in cui il server non parla SSL3, per prevenire l'attacco BARBONCINO, client e server dovrebbe implementare TLS fallback segnalazione Cipher Suite Value-https://tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-05

Esempi di creazione di TLS sul client lato:

/* Exclude SSLv2 and SSLv3 */ 
ctx = SSL_CTX_new(TLSv1_client_method()); 
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2); 
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3); 

/* Exclude SSLv2, SSLv3 and TLS 1.0 */ 

ctx = SSL_CTX_new(TLSv1_1_client_method()); 
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2); 
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3); 
SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1); 

/* Exclude SSLv2, SSLv3 ,TLS 1.0 and TLS 1.1 */ 

    ctx = SSL_CTX_new(TLSv1_2_client_method()); 
    SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2); 
    SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3); 
    SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1); 
    SSL_CTX_set_options(ctx,SSL_OP_NO_TLSv1_1); 

È inoltre O le opzioni e possono trasmettere ai SSL_CTX_set_options in un colpo solo.