2015-04-21 13 views
5

हाय मैं ग्राहक पर SSLV23 विधि का उपयोग कर कई संस्करण के टीएलएस का समर्थन करना चाहते हैं side.But मैं हो रही त्रुटि कनेक्ट करने में सक्षम नहीं कर रहा हूँ:मैं क्लाइंट साइड पर टीएलएस के एकाधिक संस्करण का समर्थन कैसे करूं?

SSL23_GET_SERVER_HELLO: SSLv3 चेतावनी हाथ मिलाना विफलता

किसी को भी कृपया बता सकते हैं मैं openssl का उपयोग कर टीएलएस के एकाधिक संस्करण का समर्थन कैसे करूं?

SSLV23 (काम नहीं कर रहा) के कोड स्निपेट

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

केवल टीएलएस V1 (कार्य)

cctx = SSL_CTX_new(TLSv1_client_method()); 
+0

आप इसका उपयोग किस संदर्भ में कर रहे हैं? – tadman

+0

असल में हम अपने क्लाइंट साइड पर एसएसएलवी 3 को अक्षम करना चाहते हैं और टीएलएस प्रोटोकॉल को सक्षम करना चाहते हैं, लेकिन यदि मेरा सर्वर केवल टीएलएस v1.2 या टीएलएस v1.1 या TLS v1 का समर्थन करेगा, तो मैं क्लाइंट साइड पर उस कार्यक्षमता को कैसे प्रदान करूं? – mahan07

+0

आप अभी 'TLSv1_client_method()' का उपयोग क्यों नहीं करते? बीटीडब्लू, आपके द्वारा दिखाए गए एक ही कोड के परिणामस्वरूप मेरे परीक्षण में टीएलएस 1.0 कनेक्शन हुआ। – Prabhu

उत्तर

6

अपने टैग और टिप्पणियां के आधार पर के लिए, मैं आप केवल TLS कनेक्शन चाहते हैं मान। ग्राहकों को केवल टीएलएस कनेक्शन शुरू करना चाहिए। यदि हां, तो आप SSLv23_client_method पर जोर क्यों देते हैं? लेकिन निम्नलिखित अपने परीक्षण में TLS 1.0 ग्राहक हैलो बाहर भेजा:

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

POODLE हमले को रोकने के लिए, सबसे अच्छा करने के लिए पूरी तरह से ग्राहक और सर्वर पर अक्षम SSL3 समर्थन किया जाएगा। आपके मामले में आपने उल्लेख किया है कि सर्वर केवल टीएलएस का समर्थन करते हैं। इसलिए मामले में सर्वर SSL3 बात करता है, पूडल हमला, ग्राहक को रोकने के लिए और सर्वर को लागू करना चाहिए टीएलएस सिफ़र सुइट Value- संकेत fallback ग्राहक पर टीएलएस की स्थापना की https://tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-05

उदाहरण SSL3 पर ग्राहकों के साथ पिछली संगतता के लिए कोई जरूरत नहीं है पक्ष:

/* 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); 

तुम भी या विकल्प और एक ही बार में SSL_CTX_set_options तक पहुंचाया जा सकता है।

संबंधित मुद्दे