समस्या सारांश: वही क्लाइंट-सर्वर विन्यास, एक ही नेटवर्क टोपोलॉजी, एक ही डिवाइस (बोल्ड 9900) - ओएस 7.0 पर पूरी तरह से अच्छी तरह से काम करता है लेकिन काम नहीं करता है जैसा कि ओएस 7.1 पर सुरक्षित है और सुरक्षित tls कनेक्शन बहुत कम समय के बाद सर्वर द्वारा बंद किया जा रहा है।ब्लैकबेरी ओएस 7.1 सुरक्षित TLS कनेक्शन बहुत ही कम समय के बाद बंद कर दिया है
प्रश्न: क्या ओएस 7.0 और ओएस 7.1 के बीच सुरक्षित टीएलएस कनेक्शन खोलने में कोई अंतर होना चाहिए? क्या आरआईएम ने 7.1 में टीएलएस बुनियादी ढांचे में कुछ भी बदल दिया? क्या ऐसा कुछ है जो 7.1 में समय से सुरक्षित सुरक्षित टीएलएस कनेक्शन बंद कर सकता है?
मेरा एप्लिकेशन किसी सर्वर से सुरक्षित Tls कनेक्शन खोलता है। कनेक्शन को एक परत परत द्वारा जीवित तंत्र द्वारा जीवित रखा जाता है और क्लाइंट इसे बंद होने तक खुला रहता है। संलग्न वास्तविक कोड का सरलीकृत संस्करण है जो कनेक्शन खोलता है और सॉकेट से पढ़ता है। कोड ओएस 5.0-7.0 पर पूरी तरह से काम करता है लेकिन ओएस 7.1 पर अपेक्षित काम नहीं करता है।
जब बहुत ही कम समय (10-45 सेकंड) के बाद ओएस 7.1, साथ अवरुद्ध read()
रिटर्न -1 (धारा के अंत तक पहुँच गया है) पर चल रहा है। ओएस 5.0-7.0 के लिए read()
पर कॉल अगले डेटा तक पहुंचने तक अवरुद्ध रहता है और कनेक्शन सर्वर द्वारा कभी बंद नहीं होता है।
Connection connection = Connector.open(connectionString);
connInputStream = connection.openInputStream();
while (true) {
try {
retVal = connInputStream.read();
if (-1 == retVal) {
break; // end of stream has been reached
}
} catch (Exception e) {
// do error handling
}
// data read from stream is handled here
}
UPDATE 1:
जाहिर है, समस्या केवल प्रकट होता है जब मैं ओएस 7.1 पर टीएलएस कनेक्शन (या तो मोबाइल नेटवर्क या वाई-फाई का प्रयोग करके) सुरक्षित उपयोग करें। ओएस 7.1 पर एक गैर सुरक्षित कनेक्शन खोलते समय सब कुछ अपेक्षित काम करता है।
मोबाइल नेटवर्क मैं निम्नलिखित कनेक्शन स्ट्रिंग का उपयोग पर TLS के लिए:
connectionString = "tls://someipaddress:443;deviceside=false;ConnectionType=mds-**secret**;EndToEndDesired";
वाईफ़ाई पर TLS के लिए मैं निम्नलिखित कनेक्शन स्ट्रिंग का उपयोग करें:
connectionString = "tls://someipaddress:443;interface=wifi;EndToEndRequired"
अद्यतन 2:
कनेक्शन कभी निष्क्रिय नहीं है। मैं लगातार डेटा प्राप्त कर रहा हूं और भेज रहा हूं। मोबाइल कनेक्शन और वाईफाई का उपयोग करते समय यह समस्या दोनों दिखाई देती है। यह मुद्दा वास्तविक ओएस 7.1 डिवाइस और सिमुलेटर पर दिखाई देता है। मुझे संदेह करना शुरू हो रहा है कि यह किसी भी तरह से कनेक्शन स्ट्रिंग या टीएलएस हैंडशेक से संबंधित है।
अद्यतन 3:
Wireshark के कैप्चर कि मैं ओएस 7.1 सिम्युलेटर के साथ किए गए के अनुसार, सुरक्षित TLS कनेक्शन सर्वर द्वारा बंद कर दिया जा रहा है (ग्राहक प्राप्त करता है फिन)। इस पल के लिए मेरे पास सर्वर की निजी कुंजी नहीं है इसलिए मैं टीएलएस हैंडशेक डीबग करने में असमर्थ हूं, लेकिन मुझे पहले से कहीं अधिक यकीन है कि मूल कारण टीएलएस हैंडशेक है।
अद्यतन 4:
सुरक्षित TLS कनेक्शन ड्रॉप प्रकट होता है जब आरएसए 2048 एईएस 256 सिफ़र सुइट ओएस 7.1 केवल पर बातचीत की है। वही सिफर सुइट ओएस 7.0 पर पूरी तरह से अच्छी तरह से काम करता है।दूसरी तरफ, डीएचई/डीएसएस 768 एईएस 128 सिफर सूट का उपयोग करते समय, सब कुछ ओएस 7.1 पर अपेक्षित काम करता है और कनेक्शन स्थिर रहता है। यह किसी भी तरह आरएसए 2048 एईएस 256 सिफर suite.ideas से संबंधित होना चाहिए?
मैं विशेषज्ञ नहीं हूं लेकिन विशेष रूप से टीएलएस कनेक्शन के लिए सर्वर कॉन्फ़िगर किया जा सकता है? –
@EugenMartynov सर्वर को ठीक से कॉन्फ़िगर किया गया है। वही सर्वर, एक ही क्लाइंट ओएस 5/6/7 चल रहा है -> सबकुछ पूरी तरह से काम करता है (सुरक्षित और सुरक्षित दोनों)। – mrvincenzo
जब यह -1 (धारा का अंत) देता है तो क्या यह लगातार सेकंड के बाद ऐसा करता है? आपने "30-45" का उल्लेख किया है। यदि आप समय लगता है तो यह एक संकेत है कि यह किसी प्रकार का टाइमआउट मार रहा है। एक चाल जो मैंने उपयोग की है, वह यह है कि यह कहां से आ रहा है इसका निदान करने में सहायता के लिए 35 सेकंड जैसे 'अजीब' टाइमआउट को कॉन्फ़िगर करना है। क्या आपने https कनेक्शन स्ट्रिंग का उपयोग करने का प्रयास किया है? – seand