2012-02-16 16 views
14

मैं सर्वर टीम द्वारा प्रदान की जाने वाली कीस्टोर का उपयोग कर सर्वर से कनेक्ट करने का प्रयास कर रहा हूं।एंड्रॉइड समर्थन .jks keystore प्रकार करता है?

सर्वर से सेवा कॉल भेजने जबकि पहले मैं निम्न API

KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 

इसे "बीकेएस" कुंजीस्टोर प्रकार लौटा रहा है का उपयोग करके KeyStore उदाहरण बनाया।

कुंजीस्टोर किस सर्वर टीम को भेजा गया है ".jks" (somename.jks) प्रकार है, इसलिए, मुझे अपवाद "कुंजी स्टोर का गलत संस्करण" मिल रहा है।

मैं

KeyStore keystore = KeyStore.getInstance("JKS");  

निम्नलिखित तरीके से लेकिन यहाँ मैं हो रही है अपवाद "KeyStore JKS कार्यान्वयन नहीं मिला" द्वारा KeyStore की getInstance करने के लिए "JKS"() पारित करके की कोशिश की।

KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); 

InputStream instream = mContext.getAssets().open("somename.jks"); 

try { 
    trustStore.load(instream, "password".toCharArray()); 
} finally { 
    try { 
     instream.close(); 
    } catch(Exception ignore) { 
    } 
} 

कृपया मुझे इस समस्या को हल करने के लिए गाइड:

यहाँ कोड का टुकड़ा है।

+0

"JKS" होगा पी, डिफ़ॉल्ट हो रहा है। यदि यह कीस्टोर प्रकार "jks" प्रकार है, तो कुंजी को एन्क्रिप्टेड PrivateKeyInfo के रूप में PKS # 8 मानक के अनुरूप एन्कोड किया जाना चाहिए। यहां से लिया गया http://developer.android.com/reference/java/security/KeyStore.html#getType() और http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html –

उत्तर

23

मुझे लगता है कि एंड्रॉयड समर्थन 'केवल' BouncyCastle KeyStores (बीकेएस के रूप में जाना जाता है) ... तुम अब भी उपयोग कर सकते हैं Portecle

यह JKS से बीकेएस में बदलने के लिए, एक आकर्षण की तरह काम करना चाहिए (कम से कम यह के लिए काम किया मुझे जब एक बीकेएस प्रारूप में मेरी .crt संगृहीत करने का प्रयास;)

'केवल' जिसका अर्थ है, आसानी से यहाँ: वरना आप सामान में हेरफेर करने के

+1

युप, जेकेएस एक सूर्य/ओरेकल-मालिकाना प्रारूप है और मुझे लगता है कि Google कुछ और बेवकूफ मुकदमे की तरह महसूस नहीं कर रहा था। – Jens

+0

@Cehm जो आपने कहा वह सही है, एंड्रॉइड केवल बीकेएस का समर्थन कर रहा है। मुझे सर्वर टीम से बीकेएस कीस्टोर मिला और यह कोड के समान टुकड़े के साथ आकर्षण की तरह काम करता है। – sankar

+0

हां लगता है एंड्रॉइड जेकेएस का समर्थन नहीं करता .. KeyStore.getDefaultType(); रिटर्न "बीकेएस" –

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