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.
In che contesto stai utilizzando? – tadman
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
perché non usi 'TLSv1_client_method()'? A proposito, lo stesso codice che hai mostrato è risultato nella connessione TLS1.0 nel mio test. – Prabhu