2012-01-08 12 views
5

मेरे पास एक प्रोटोकॉल है जहां एक नियमित सादा सॉकेट है जिसे एसएसएल/टीएलएस में अपग्रेड किया जाता है। मुझे एसएसएल हैंडशेक के साथ-साथ अन्य पैरामीटर जैसे अनुमत प्रोटोकॉल संस्करणों को प्रोसेस करने के लिए टाइमआउट को नियंत्रित करने में सक्षम होना चाहिए। (उदा। एसएसएलवी 3 बंद करें)।SSLSocketFactory सेटिंग हैंडशेक टाइमआउट और सॉकेट गुण

आप javax.net.ssl.SSLSocketFactory के माध्यम से हाथ मिलाना समय समाप्ति के अलावा यह सब कर सकते हैं, आप createSocket(socket, host port, autoClose) फोन लौटे SSLSocket पर अतिरिक्त सेटिंग्स निर्धारित करते हैं, तो हाथ मिलाना को startHandshake कॉल कर सकते हैं। लेकिन हैंडशेक टाइमआउट सेटिंग सेट करने का कोई तरीका नहीं दिखता है, और डिफ़ॉल्ट सेटिंग अपेक्षाकृत छोटी है।

डर कभी नहीं, android.net.SSLCertificateSocketFactory यहाँ है !, यह आपके हाथ मिलाना टाइमआउट सेटिंग को नियंत्रित करने की अनुमति देता है, लेकिन यह भी createSocket(socket, host, port, autoClose) के व्यवहार में परिवर्तन वास्तविक हाथ मिलाना करने के लिए, और समय के आप अपने भी कारखाने से वापस अपने SSLSocket मिल कुछ भी करने में देर हो रही है जो हैंडशेक को प्रभावित करेगी (जैसे एसएसएलवी 3 बंद करें)।

क्या दोनों को करने का कोई तरीका है? मुझे एपीआई v8

(एसएसएलकॉन्टेक्स्ट/एसएसएल पैरामीटर ऐसा लगता है कि यह उपयोगी हो सकता है लेकिन एपीआई v9 है, लेकिन ऐसा लगता है कि SSLCertificateSocketFactory अपने स्वयं के संदर्भ बनाता है, इसलिए डिफ़ॉल्ट सेटिंग को सेट करने में मदद नहीं होगी)।

उत्तर

-1

विशिष्ट प्रोटोकॉल चयन के लिए आपने startHandshake को कॉल करने से पहले SSLSocket.setEnabledProtocols को आजमाया है?

हैंडशेक टाइमआउट सेटिंग के लिए आप SSLCertificateSocketFactory का उपयोग कर सकते हैं।

+1

यदि आपको SSLCertificateSocketFactory से सॉकेट मिलता है, जिसे आपको टाइमआउट सेट करने के लिए करना है, तो यह स्वचालित रूप से आपके लिए स्टार्ट हैंडशेक कॉल करता है, इसलिए आपको सॉकेट इंस्टेंस पर प्रोटोकॉल सेट करने का कोई मौका नहीं मिलता है। – superfell

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