2013-03-01 5 views
6

के बीच अंतर मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जो विभिन्न सर्वरों (http और https) से छवियों को पुनर्प्राप्त करता है।एचटीपीएस कनेक्शन, एंड्रॉइड 2.3 और 4

मैं this usefull Q/A पाया Android 2.3 में No peer certificate error की समस्या से बचने के लिए, लेकिन मैं नहीं समझ सकता क्यों एंड्रॉयड 4 (> 3) इस समस्या में ("No peer certificate error") पेश नहीं किया गया।

कृपया, मुझे ठीक कर लें मैं गलत हूँ:

Android 2.3 में
  • HTTPS कनेक्शन पूरे प्रमाण पत्र चेक (और हैंडशेक) करता है;
  • एंड्रॉइड में> 3 हैंडशेक कनेक्शन स्थापित होने पर भी HTTPS कनेक्शन स्थापित होता है (उदा: मेरे ऐप, सहकर्मी के रूप में, प्रमाण पत्र नहीं है)।

एंड्रॉइड के इन संस्करणों के बीच अंतर क्या हैं? मुझे क्यों चाहिए एंड्रॉइड 2.3 में सभी पर विश्वास करें और एंड्रॉइड 4 में नहीं?

एंड्रॉइड 2.3 में क्यों मुझे निम्नलिखित अपवाद प्राप्त होता है: "javax.net.ssl.SSLPeerUnverifiedException: No peer certificate error" जबकि एंड्रॉइड 4 में सबकुछ ठीक काम करता है और कनेक्शन स्थापित होता है?

क्या सब कुछ एसएनआई Server Name Indication से संबंधित है, Android Honeycomb में पेश किया गया है?

+0

क्या आप समाधान या अंतर चाहते हैं? –

+0

एंड्रॉइड संस्करण के बीच अंतर। SO समाधान से भरा है। – StarsSky

+0

क्या आपका कोड 2.3 पर काम कर रहा है? –

उत्तर

2

आपका प्रमाणन प्राधिकारी शायद एंड्रॉइड के 2.3.3 संस्करण में सूचीबद्ध नहीं है, लेकिन 4.x संस्करण में है। निश्चित रूप से पता लगाने के लिए दोनों डिवाइसों पर कीस्टोर की जांच करें।

कमांड लाइन से एडीबी का उपयोग करके आप एक फ़ाइल में एंड्रॉइड की कीस्टोर को डंप कर सकते हैं और यह देखने के लिए जांच सकते हैं कि वह जारीकर्ता आपके कीस्टोर में उपलब्ध है (रूट होने की आवश्यकता हो सकती है)। adb pull /system/etc/security/cacerts.bks cacerts.bks

डाउनलोड करें और Portecle स्थापित (से: http://portecle.sourceforge.net/) फ़ाइल का चयन/ओपन KeyStore ... और cacerts.bks फ़ाइल चुनें। उपकरण/कीस्टोर रिपोर्ट का चयन करें और वेब ब्राउज़र से प्राप्त प्रमाणपत्र में निर्दिष्ट सीएन को देखने के लिए उस जानकारी को टेक्स्ट एडिटर में कॉपी करें। मेरे मामले में मुझे "साइबरट्रस्ट पब्लिक स्यूरसेवर एसवी सीए" से कोई नहीं मिला।

अपने कंप्यूटर वेब ब्राउज़र पर https://example.website.com/ का उपयोग करने में रुचि रखने वाली वेबसाइट पर ब्राउज़ करें और पता लगाएं कि सीएन कौन है। ऊपर दिखाए गए कीस्टोर पर इसकी तुलना करें। यदि यह कीस्टोर में नहीं है तो आपको इसे जोड़ना होगा।

नोट: एंड्रॉइड 4.0 फोन के पास प्रमाणपत्रों को संग्रहीत करने के लिए एक अलग विधि है और नीचे उल्लिखित cacerts.bks फ़ाइल का उपयोग न करें। उनके लिए आप वेब ब्राउजर में वांछित https साइट खोलने और वांछित प्रमाणपत्रों को इस तरह से जोड़ सकते हैं।

मेरे पास फेसबुक और रेडबॉक्स में कनेक्शन समस्याएं थीं। मेरी समस्या को ठीक करने और अपने एंड्रॉयड 2.3.3 फोन प्रमाण पत्र मैं एंड्रॉयड 3.2 एमुलेटर से एक की नकल की अद्यतन करें और अपने फोन पर कि डाल:

  1. बनाएं और एंड्रॉयड 3.2 वर्चुअल डिवाइस शुरू करते हैं।
  2. एमुलेटर से cacerts.bks फ़ाइल कॉपी करें (सुनिश्चित करें कि आपका अन्य डिवाइस कनेक्ट नहीं है)। adb pull /system/etc/security/cacerts.bks cacerts।बीएस
  3. एमुलेटर डिस्कनेक्ट करें।
  4. अपने डिवाइस को अपडेट करने के लिए कनेक्ट करें (रूट होना चाहिए)। पढ़ने/लिखने की क्षमताओं के लिए आपको/सिस्टम फ़ोल्डर को आरडब्ल्यू के रूप में पुनर्निर्मित करने की आवश्यकता हो सकती है। मुद्दों बढ़ते के लिए देखें: this link
  5. सहेजें अपने डिवाइस से पुराने प्रमाणपत्र फ़ाइल की एक प्रतिलिपि: adb pull /system/etc/security/cacerts.bks cacerts.bks.old
  6. पर अद्यतन प्रमाणपत्र फ़ाइल रखो अपने डिवाइस एडीबी पुश cacerts.bks/system/etc/security/
  7. डिवाइस रीबूट करें डिवाइस
  8. नई कैकरर्ट फ़ाइल को पुनः कनेक्ट और सत्यापित किया गया था।
+0

प्रमाण पत्र मौजूद है: सीएन = वेरीसाइन कक्षा 3 सार्वजनिक प्राथमिक प्रमाणन प्राधिकरण - जी 5, ओयू = "(सी) 2006 वेरीसाइन, इंक। - अधिकृत उपयोग के लिए केवल", ओयू = वेरीसाइन ट्रस्ट नेटवर्क, ओ = "वेरीसाइन, इंक। ", सी = यूएस StarsSky

+0

@StarsSky क्या आप उस साइट का पता प्रदान कर सकते हैं जिसके साथ आप काम कर रहे हैं? – RightHandedMonkey

+0

ऐसा लगता है कि मेरे kwystore में मध्यवर्ती प्रमाणपत्र गुम है: VeriSign कक्षा 3 अंतर्राष्ट्रीय सर्वर सीए - जी 3। क्या यह कारण हो सकता है? – StarsSky

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