2010-07-16 8 views
8

मेरे पास एक स्वयं हस्ताक्षरित सर्वर प्रमाणपत्र (cert.pem) है और इसे एंड्रॉइड एप्लिकेशन में SSL सॉकेट के लिए सक्षम करने की आवश्यकता है। आदर्श रूप से मैं कोड को .jar फ़ाइल के रूप में पैकेज करना चाहता हूं और बाहरी प्रमाणपत्र फ़ाइल की आवश्यकता नहीं है (यानी इसे कोड में शामिल करें)।एंड्रॉइड पर एसएसएल सॉकेट के लिए एक स्व-हस्ताक्षरित प्रमाणपत्र कैसे सक्षम करें?

SSLContext sc = SSLContext.getInstance("TLS"); 
sc.init(null, new TrustManager [] { new MyTrustManager() }, new SecureRandom()); 

मैं एक कस्टम KeyManager या कस्टम TrustManager को प्रमाण पत्र जोड़ने की आवश्यकता है:

इस कोड को मैं सभी प्रमाणपत्र, जो नहीं है कि मैं क्या चाहता हूँ स्वीकार कर सकते हैं के साथ

?

एक समस्या यह है कि मैं का सामना करना पड़ा है कि एंड्रॉयड JKS keystores को स्वीकार नहीं करता है (KeyStore.getDefaultType() देता है "बीकेएस"): " java.security.KeyStoreException: KeyStore JKS कार्यान्वयन नहीं मिला"

कोई आगे बढ़ने के विचारों की अत्यधिक सराहना की जाएगी!

उत्तर

13

हाँ, आप एक कस्टम KeyStore को प्रमाण पत्र जोड़ने की जरूरत है। यह मूल रूप से एक 4-चरणीय प्रक्रिया है:

  1. अपना सर्वर प्रमाणपत्र प्राप्त करें।
  2. अपने एप्लिकेशन में एक कच्चे संसाधन के रूप में एक सर्वर के प्रमाणपत्र को एक कोरस्टोर में आयात करें। कीस्टोर प्रकार बीकेएस होना चाहिए।
  3. एसएसएलकॉन्टेक्स्ट में प्रमाणपत्र लोड करने के लिए अपने जावा/एंड्रॉइड प्रोग्राम में अपना खुद का ट्रस्टमैनेजर बनाएं।
  4. अपने SSL कनेक्शन के लिए SSLContext का उपयोग करें।
    http://randomizedsort.blogspot.com/2010/09/step-to-step-guide-to-programming.html

    गुड लक:

विस्तृत निर्देश और नमूना कोड के लिए यह लिंक देखें।
नेक

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