2012-02-24 14 views
8

द्वारा बुलाया जा सके, हमारे पास एक वेब सेवा है जिसे केवल एक विशिष्ट एंड्रॉइड ऐप द्वारा ही बुलाया जाना चाहिए। इस समस्या के लिए क्या समाधान हैं?एक वेब सेवा को सुरक्षित करना ताकि इसे केवल एक विशिष्ट एंड्रॉइड एप्लिकेशन

आवश्यकता प्रमाणीकरण का उपयोग नहीं करना है।

+0

[इस] (http://www.javaranch.com/journal/200603/WSSecurity.html) जैसे कुछ के बारे में क्या? – loscuropresagio

उत्तर

7

यदि यह केवल अपने ग्राहक है और अपने सर्वर, आप (और चाहिए) कुछ भी खरीद बिना SSL का उपयोग कर सकते हैं। आप सर्वर और क्लाइंट को नियंत्रित करते हैं, इसलिए प्रत्येक को केवल एक प्रमाणपत्र पर भरोसा करना चाहिए, जो कि दूसरे से संबंधित है और आपको इस उद्देश्य के लिए सीए की आवश्यकता नहीं है।

यहां उच्च स्तरीय दृष्टिकोण है। एक स्व-हस्ताक्षरित सर्वर SSL प्रमाणपत्र बनाएं और अपने वेब सर्वर पर तैनात करें। आप इस उद्देश्य के लिए एंड्रॉइड एसडीके के साथ शामिल कीटोल का उपयोग कर सकते हैं। फिर एक स्व-हस्ताक्षरित क्लाइंट बनाएं और संसाधन के रूप में अपने एप्लिकेशन में शामिल एक कस्टम कीस्टोर में अपने एप्लिकेशन के भीतर तैनात करें (कीटोल इसे भी उत्पन्न करेगा)। क्लाइंट-साइड एसएसएल प्रमाणीकरण की आवश्यकता के लिए सर्वर को कॉन्फ़िगर करें और केवल आपके द्वारा जेनरेट किए गए क्लाइंट प्रमाणपत्र को स्वीकार करें। क्लाइंट-साइड सर्टिफिकेट का उपयोग स्वयं पहचानने के लिए क्लाइंट को कॉन्फ़िगर करें और केवल उस सर्वर के साइड सर्टिफिकेट को स्वीकार करें जिसे आपने अपने सर्वर पर इंस्टॉल किया है।

इसके लिए एक चरण-दर-चरण यहां वांछित की तुलना में एक लंबा उत्तर है। मैं चरणों में ऐसा करने का सुझाव दूंगा क्योंकि वेब पर संसाधन हैं, एंड्रॉइड में स्वयं-हस्ताक्षरित SSL प्रमाणपत्र, सर्वर और क्लाइंट दोनों पक्षों से कैसे निपटें। O'Reilly द्वारा प्रकाशित, मेरी पुस्तक, Application Security for the Android Platform में एक पूर्ण चलना भी है।


आप आम तौर पर sometype की एक कुंजी संग्रह में है कि प्रमाण पत्र/निजी कुंजी (एक KeyStore यदि आप Android का उपयोग कर रहे हैं) संग्रहीत करेंगे और उस कुंजीस्टोर एन्क्रिप्ट किया जाएगा। वह एन्क्रिप्शन पासवर्ड पर आधारित होता है, इसलिए आपको या तो अपने क्लाइंट में उस पासवर्ड को स्टोर करने की आवश्यकता होगी, या (2) उपयोगकर्ता को क्लाइंट ऐप शुरू करने पर पासवर्ड के लिए पूछें। आपको जो करना है वह आपके उपयोगकेस पर निर्भर करता है। यदि (2) स्वीकार्य है, तो आपने रिवर्स इंजीनियरिंग के खिलाफ अपने क्रेडेंशियल को सुरक्षित कर दिया है क्योंकि इसे एन्क्रिप्ट किया जाएगा और पासवर्ड कहीं भी संग्रहीत नहीं किया जाएगा (लेकिन उपयोगकर्ता को इसे हर बार टाइप करना होगा)। यदि आप (1) करते हैं, तो कोई व्यक्ति आपके क्लाइंट को इंजीनियर करने, पासवर्ड प्राप्त करने, कीस्टोर प्राप्त करने, निजी कुंजी और प्रमाणपत्र को डिक्रिप्ट करने में सक्षम होगा, और एक और क्लाइंट बनाएगा जो सर्वर से कनेक्ट करने में सक्षम होगा।

ऐसा करने के लिए आप कुछ भी नहीं कर सकते हैं; आप रिवर्स इंजीनियरिंग को अपने कोड को कड़ी मेहनत कर सकते हैं (obfuscation, आदि द्वारा) लेकिन आप इसे असंभव नहीं बना सकते हैं। आपको यह निर्धारित करने की आवश्यकता है कि आप इन दृष्टिकोणों के साथ कम करने का प्रयास कर रहे हैं और इसे कम करने के लिए कितना काम करना उचित है।

+0

क्या किसी के लिए इस प्रमाणपत्र को ऐप से चोरी करना और नकली ऐप में इसका उपयोग करना संभव है? – pyeleven

+0

हां। ऊपर संशोधित उत्तर देखें। – jeffsix

+0

यह निर्णय लेने के लिए पर्याप्त जानकारी है, धन्यवाद! मैं समझना चाहता हूं कि एंड्रॉइड ऐप प्रमाणपत्र इस सब से कैसे संबंधित है, क्या आप मुझे सही दिशा में इंगित कर सकते हैं? मेरा मतलब है कि ऐप प्रमाणपत्र क्लाइंट साइड एसएसएल प्रमाणपत्र के रूप में इस्तेमाल किया जा सकता है? – pyeleven

1

मुझे लगता है कि यह जगह पर उचित प्रमाणीकरण के साथ काम करेगा। Securing communication from android to a web service आशा है कि यह मदद करता है =)

+0

दुर्भाग्य से हमें इसकी आवश्यकता है क्योंकि हम जिस सुविधा को कार्यान्वित करेंगे, वह प्रमाणीकरण का उपयोग नहीं करेगा। – pyeleven

1

आप पूरी तरह निश्चित इस वेब सेवा केवल, अधिकृत ऐप्लिकेशन/उपकरणों द्वारा पहुँचा जा करने की आवश्यकता होगी क्लाइंट साइड SSL प्रमाणपत्र के साथ जाना कर रहे हैं: पहली पोस्ट मैं सिर्फ पर stumpled इस एक था और सर्वर पर केवल अधिकृत कैर्ट वाले क्लाइंट तक पहुंच प्रतिबंधित करें। इसमें एसएसएल को हर समय मजबूर करने की बोनस सुविधा है ताकि आपको खुले चैनल पर ऑथ रहस्य पसंद न हों। यहाँ अपाचे के लिए एक त्वरित गाइड है, लेकिन आप nginx भी इस्तेमाल कर सकते हैं:

http://it.toolbox.com/blogs/securitymonkey/howto-securing-a-website-with-client-ssl-certificates-11500

+0

क्या इस प्रमाणपत्र को एक अलग एप्लिकेशन द्वारा कॉपी किया जा सकता है? क्या वह एप्लिकेशन सेवा का फायदा उठाने में सक्षम होगा? – pyeleven

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