स्व-हस्ताक्षरित प्रमाणपत्र सफलता का दावा स्थापित करता है, लेकिन एंड्रॉइड ऐसे कार्य करता है जैसे कि प्रमाणपत्र नहीं है


17

मैं एंड्रॉइड 4.3 में अपने वेब सर्वर के लिए स्व-हस्ताक्षरित प्रमाणपत्र स्थापित करने का प्रयास कर रहा हूं। मेरे पास एसडी कार्ड की जड़ में .crt फ़ाइल है (जो वास्तव में अनुकरणीय है क्योंकि मेरे पास स्लॉट में कोई एसडी कार्ड नहीं है)।

प्रमाणपत्र स्थापित करने के लिए मैं सेटिंग पर जा रहा हूं -> सामान्य -> ​​सुरक्षा -> क्रेडेंशियल स्टोरेज -> डिवाइस स्टोरेज से इंस्टॉल करें।

मुझे प्रमाणपत्र का नाम (फ़ाइल नाम माइनस .crt एक्सटेंशन) दिखाते हुए एक डायलॉग बॉक्स मिलता है, जिसे मैं संशोधित कर सकता हूं ("नहीं," "वीपीएन और एप्स के साथ पुल" के लिए उपयोग किया जाता है) और नीचे दिया गया टेक्स्ट। "पैकेज में यह सूचित करता है कि संवाद: एक उपयोगकर्ता प्रमाणपत्र"। सब कुछ ठीक लग रहा है, इसलिए मैं "ओके" पर क्लिक करता हूं। संवाद चला जाता है और एक टोस्ट संदेश "[नाम] स्थापित" के साथ पॉप अप होता है।

हालाँकि अगर मैं तुरंत "विश्वसनीय क्रेडेंशियल्स" पर जाता हूं और "उपयोगकर्ता" का चयन करता हूं तो कुछ भी नहीं है! नया प्रमाणपत्र "सिस्टम" के अंतर्गत नहीं है, लेकिन मैं वहां इसकी उम्मीद नहीं करूंगा। अगर मैं इसके बाद किसी ब्राउज़र पर जाता हूं और मेरे पास जाने का प्रयास करता हूं। वेब साइट, मुझे अभी भी चेतावनी मिली है कि साइट के प्रमाण पत्र पर भरोसा नहीं है। मैंने रिबूट करने की भी कोशिश की है, लेकिन इससे कोई फर्क नहीं पड़ता।

मैं क्या गलत कर रहा हूं? त्रुटि संदेशों का पूर्ण अभाव मददगार नहीं है। क्या यह संभव है कि मेरा प्रमाणपत्र गलत प्रारूप में है? मैंने सर्वर के ssl निर्देशिका में .crt फ़ाइल का उपयोग करने की कोशिश की है और मैंने इसे DER प्रारूप में परिवर्तित करने का प्रयास किया है।

अद्यतन: मैंने कहीं पढ़ा है कि Android को p12 प्रारूप में होने के लिए प्रमाणपत्र की आवश्यकता होती है, इसलिए मैंने Apache2 प्रमाणपत्र को निम्नलिखित 12 का उपयोग करके p12 में बदल दिया:

openssl pkcs12 -export -inkey server.key -in server.crt -out ~/server.p12

मैंने तब उपरोक्त चरणों को दोहराया, एक ही सफलता संदेश मिला, और फिर उपयोगकर्ता क्रेडेंशियल्स में प्रमाण पत्र को देखने के लिए आगे नहीं बढ़ा और मुझे अभी भी मोबाइल ब्राउज़र से बिना प्रमाणपत्र के त्रुटि मिली है।

जवाबों:


19

मुझे वास्तव में प्रमाण पत्र स्थापित करने के लिए एंड्रॉइड प्राप्त करने में एक ही समस्या थी, जब तक कि मुझे यह साइट नहीं मिली जो मेरे लिए काम करने वाली विधि का वर्णन करता है। यह निम्नलिखित चरणों में उबलता है:

  1. V3_req एक्सटेंशन के साथ एक निजी कुंजी और सार्वजनिक x509 प्रमाणपत्र बनाएं और CA के रूप में सक्षम करें:

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/my_site.key -out /etc/ssl/certs/my_site.crt -reqexts v3_req -extensions v3_ca

  2. प्रमाणपत्र को DER प्रारूप में रूपांतरित करें, जो Android द्वारा समझा गया है:

    sudo openssl x509 -in /etc/ssl/certs/my_site.crt -outform der -out my_site.der.crt

  3. my_site.der.crtअपने एंड्रॉइड डिवाइस को प्राप्त करने के लिए किसी भी विधि का उपयोग करें - मुझे यह आसान लगा कि बस अपने वेब सर्वर द्वारा होस्ट की गई फ़ाइल को डाउनलोड करें और इसे एंड्रॉइड ब्राउज़र के माध्यम से डाउनलोड करें, जो तब स्वचालित रूप से आपको इसे स्थापित करने देता है।

हालाँकि मुझे स्टेप 1 पसंद आया होगा, दो (1 ए। निजी कुंजी और 1 बी। सार्वजनिक प्रमाण पत्र की पीढ़ी) में टूटने के लिए, मैंने यह जांचने के लिए बहुत समय निवेश नहीं किया कि कैसे करना है। कृपया मुझे एक टिप्पणी में बताएं अगर आपको एक ऐसा तरीका मिला जो काम करता है, धन्यवाद।

(टिप्पणी जोड़ने के बजाय, मुझे लगता है कि यह वास्तव में भविष्य के संदर्भ के लिए उत्तर के हिस्से के रूप में है, इसलिए मैं इसे संपादित कर रहा हूं। -Meel)

एक CA के रूप में सक्षम प्रमाण पत्र बनाने के बजाय, मैंने एक स्व-हस्ताक्षरित CA बनाया और फिर नए सीए के साथ अपनी मौजूदा कुंजी / csr पर फिर से हस्ताक्षर किए। फिर मैंने एंड्रॉइड और वॉइला में स्व-हस्ताक्षरित सीए जोड़ा! इसने काम कर दिया!

स्व-हस्ताक्षरित सीए बनाना:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.pem

एक मौजूदा CSR पर फिर से हस्ताक्षर करने से मेरे पास कुंजी का निर्माण हुआ

openssl x509 -req -in existing.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out existing.crt -days 3649

अब आपके दूसरे कमांड के संशोधित रूप का उपयोग करके मैंने CA प्रमाणपत्र को DER फॉर्म में बदल दिया है:

openssl x509 -in /etc/apache2/ssl/rootCA.pem -outform der -out ~/rootCA.der.crt

इसके बारे में महान बात यह है कि किसी भी अतिरिक्त अविश्वसनीय प्रमाण पत्र जो अब नए स्व-हस्ताक्षरित सीए के साथ फिर से हस्ताक्षर किए गए हैं, अब किसी भी डिवाइस पर भरोसा किया जाएगा कि नए सीए को कुछ और स्थापित करने की आवश्यकता के बिना स्थापित किया गया है। यह उन विश्वसनीय साइटों की समस्या को बिल्कुल हल नहीं करता है जिन पर आपका कोई नियंत्रण नहीं है, लेकिन अगर आपके आंतरिक विभाग या किसी चीज़ के लिए आपके आईटी विभाग पर कोई प्रभाव पड़ता है तो यह आसान हो सकता है।


1
मेरे पास पहले से ही वह प्रमाणपत्र है जिसे मुझे स्थापित करने की आवश्यकता है, इसलिए मैंने चरण 2 की कोशिश की और यह अभी भी उपयोगकर्ता विश्वसनीय क्रेडेंशियल्स में प्रदर्शित नहीं हो रहा है क्योंकि यह स्थापित करने में सफल होने का दावा करता है, और क्रोम अभी भी पुनरारंभ करने के बाद "अविश्वसनीय साइट" त्रुटि प्रदर्शित करता है।
माइकल

1
क्या v3_req एक्सटेंशन के बारे में कुछ हो सकता है और CA के रूप में सक्षम किया गया है कि इसका उपयोग करने के लिए Android के लिए प्रमाणपत्र की आवश्यकता है? यदि हां, तो क्या ऐसा कोई आदेश है जिसका उपयोग मैं मौजूदा प्रमाण पत्र लेने के लिए कर सकता हूं और उस जानकारी को इसमें जोड़ सकता हूं, क्योंकि मुझे उन सभी समारोहों पर नियंत्रण नहीं है जिन्हें मैं स्थापित करना चाहता हूं।
माइकल

3
मेरे पिछले प्रश्न के पहले आधे हिस्से का उत्तर देने के लिए, मैंने आपके द्वारा लिंक किए गए पृष्ठ को पढ़ा, और ऐसा प्रतीत होता है कि समस्या यह है कि एंड्रॉइड स्व-हस्ताक्षरित प्रमाण पत्र स्थापित करने से इनकार करता है (लेकिन स्व-हस्ताक्षरित सीए नहीं)। यह संयुक्त राष्ट्र (der) -documented लगता है, और तथ्य यह है कि Android स्थापित करने का नाटक करता है यह और भी बदतर बना देता है। लेकिन सवाल यह है कि अगर मेरे पास एक स्व-हस्ताक्षरित प्रमाण पत्र है जिस पर मेरा नियंत्रण नहीं है, तो क्या इसका कोई तरीका "सीए" है-इसे सत्यापित करें ताकि मैं इसे स्थापित कर सकूं?
माइकल

1
@ मुझे आशा है कि आपको कोई आपत्ति नहीं है, मैं आपके उत्तर को अपने समाधान में शामिल करने के लिए संपादित करने जा रहा हूं, बजाय इसे टिप्पणियों में शामिल करने के, क्योंकि यह वास्तव में उत्तर के भाग के रूप में हैं।
माइकल

1
मुझे यह नहीं मिलता है कि मौजूदा। साइन हस्ताक्षर अनुरोध कैसे उत्पन्न होता है। मुझे लगता है कि यह स्टेप ट्यूटोरियल द्वारा पूर्ण चरण के लिए अंतिम अनुपलब्ध बिंदु है।
गुप्तांग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.