सबसे पहले, कृपया ध्यान दें कि मैं SSL को कॉन्फ़िगर करने के लिए नया हूं। अतीत में, मैं हमेशा भाग्यशाली रहा हूं कि आईटी विभाग को समय से पहले मेरे लिए सेट अप किया जाए। इसलिए संभावना के लिए तैयार रहें कि मुझे आपके कुछ उत्तरों पर स्पष्टीकरण मांगने की आवश्यकता हो सकती है। =)अपाचे मेरे एसएसएल क्लाइंट सर्टिफिकेट का अनुरोध नहीं करेगा
क्या मैं
करना मैं स्थापन कर रहा हूँ कर्मचारियों के लिए एक कंपनी के इंट्रानेट वेबसाइट की कोशिश कर रहा हूँ। उदाहरण के लिए, एक ब्राउज़र प्रारंभ पृष्ठ होगा जो प्रत्येक कर्मचारी के लिए अनुकूलित सामग्री दिखाता है। इस प्रकार, मुझे किसी भी उपयोगकर्ता नाम/पासवर्ड या अन्य संकेत की आवश्यकता के बिना कहा कर्मचारी को पहचानने में सक्षम होना चाहिए (एक बार सेटअप ठीक है हालांकि; मैं नहीं चाहता कि उन्हें हर बार संकेत दिया जाए)। स्वाभाविक रूप से, एसएसएल ऐसा करने के लिए जाने का सबसे अच्छा तरीका प्रतीत होता है।
मेरे पास "उपयोगकर्ता" खातों को SSL_CLIENT_M_SERIAL और SSL_CLIENT_I_DN से संबद्ध करने के लिए एक MySQL डेटाबेस सेटअप होगा, जो मुझे लगता है कि प्रत्येक क्लाइंट प्रमाणपत्र (?) के लिए अद्वितीय होगा। मुझे इस आलेख से यह विचार मिला: http://cweiske.de/tagebuch/ssl-client-certificates.htm
पहली बार उपयोगकर्ता आंतरिक वेबसाइट पर जाता है, उनके पास प्रमाणपत्र नहीं होगा (मैं उन्हें क्लाइंट के लिए मैन्युअल रूप से उत्पन्न नहीं करना चाहता!), इस मामले में $ _SERVER ["SSL_CLIENT_VERIFY"] == "नहीं"। यदि ऐसा होता है, तो यह उपयोगकर्ता खाता सेटअप पृष्ठ पर जाएगा, जिसमें एक चरण शामिल होगा जहां PHP एक SSL क्लाइंट प्रमाणपत्र उत्पन्न करता है और उपयोगकर्ता को इंस्टॉल करने के लिए ब्राउज़र पर भेजता है। अच्छा और सरल उपयोगकर्ता तब प्रमाणपत्र स्थापित करता है, एसोसिएशन बनाया जाता है, और ब्राउज़र को पुनरारंभ करने के बाद (अच्छे उपाय के लिए), उपयोगकर्ता आंतरिक वेबसाइट पर वापस जाता है।
इस बिंदु पर, अपाचे को क्लाइंट प्रमाणपत्र का अनुरोध करना चाहिए, जिसे ब्राउजर भेजता है। PHP स्क्रिप्ट फिर आवश्यक $ _SERVER चर का विश्लेषण करता है, MySQL डेटाबेस के विरुद्ध तुलना करता है, और अच्छे समय सभी के पास होते हैं। फिर, अच्छा और सरल।
कि क्या कारगर है अब तक
मैं सर्वर साइड प्रमाणपत्र इंस्टॉल। और हाँ, वे स्वयं हस्ताक्षरित हैं (स्पष्ट कारणों से)। अपाचे में mod_ssl इंस्टॉल है और यह सब ठीक काम कर रहा है। मैंने एक PHP स्क्रिप्ट बनाई है जो केवल $ _SERVER सरणी को डंप करती है, और सभी SSL_SERVER_ * कुंजी मान उस प्रमाणपत्र से मेल खाते हैं जो मैंने इसके लिए बनाया था।
समस्या
मैं क्लाइंट प्रमाण पत्र काम करने के लिए नहीं मिल सकता है! उसी PHP स्क्रिप्ट में, कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, SSL_CLIENT_VERIFY == "नहीं" और अन्य SSL_CLIENT_ * कुंजी गुम हैं। यह तब होता है जब मेरे पास SSLVerifyClient ssl.conf में वैकल्पिक पर सेट हो। मैंने जो भी ट्यूटोरियल पढ़ा है, उनके अनुसार, वे सभी कहते हैं कि वेबसर्वर को ब्राउज़र प्रमाण पत्र के लिए ब्राउज़र से पूछना चाहिए। बात यह है कि, मैं इसे करने के लिए नहीं मिल सकता! यह सीधे PHP स्क्रिप्ट पर जाता है और मानता है कि मेरे पास कोई क्लाइंट प्रमाणपत्र नहीं है। यह फ़ायरफ़ॉक्स, क्रोम, और आईई में होता है।
इसलिए मैंने SSLVerifyClient को वेब सर्वर पर आवश्यक और पुनरारंभ करने की कोशिश की। उस विकल्प के साथ, मैं एक एसएसएल कनेक्शन भी स्थापित नहीं कर सकता। फ़ायरफ़ॉक्स बस कहता है कि कनेक्शन रीसेट कर दिया गया है (अन्य ब्राउज़र भी उस त्रुटि के अपने संस्करण प्रदर्शित करते हैं)। अजीब बात यह है कि लॉग इन कनेक्शन प्रयासों पर कोई गतिविधि नहीं दिखाते हैं! अर्थात। access_log, error_log, ssl_access_log, ssl_error_log, और ssl_request_log सभी कोई भी नहीं दिखाते; ऐसा लगता है कि प्रयास कभी भी नहीं हुआ। यह निराशाजनक है क्योंकि इसका मतलब है कि मेरे पास काम करने के लिए एक त्रुटि संदेश भी नहीं है। बस एक वेबसर्वर निष्क्रिय-आक्रामक रूप से मुझे नरक में जाने के लिए कह रहा है।
मैंने PHP के ओपनएसएसएल एक्सटेंशन का उपयोग करके मैन्युअल रूप से अपना खुद का क्लाइंट प्रमाणपत्र बनाने/स्थापित करने का प्रयास किया। सर्टिफिकेट बस ठीक है, हालांकि मुझे उस प्रमाणपत्र को सर्वर के साथ संबद्ध करने के बारे में कोई जानकारी नहीं मिल रही है (मुझे लगता है कि मुझे भी इसकी आवश्यकता है?)। साथ ही, यह किसी भी तरह से कोई फर्क नहीं पड़ता है, क्योंकि वैकल्पिक सेट होने पर अपाचे अभी भी क्लाइंट प्रमाणपत्र का अनुरोध नहीं करेगा। और यदि आवश्यकता निर्धारित है, तो यह सिर्फ स्पष्टीकरण के बिना उड़ाता है। इस स्कीमा को काम करने के लिए मुझे इसे वैकल्पिक रूप से सेट करने की आवश्यकता है।
पर्यावरण
ओएस: CentOS 5.7 64-बिट (VirtualBox)
अपाचे: 2.2.3
पीएचपी: 5.3.10
मैं तुम्हें अनुमान लगा रहा हूँ हो सकता है मेरी मदद करने के लिए और जानकारी चाहिए, तो कृपया पूछें! मैं आपको जो भी चाहिए उसे प्रदान करूंगा।
संक्षेप में, मुझे यह जानने की आवश्यकता है कि अपाचे को ऊपर उल्लिखित शर्तों के अनुसार SSL क्लाइंट प्रमाणपत्र का अनुरोध करने के लिए कैसे प्राप्त करें। साथ ही, अगर सर्वर प्रमाण पत्र के साथ क्लाइंट प्रमाणपत्र "संगत" बनाने के लिए कोई विशेष हस्ताक्षर/आदि किया जाना है (फिर से, प्रत्येक ग्राहक प्रमाण के लिए खोल के माध्यम से मैन्युअल रूप से ऐसा करने के बिना!), मुझे यह जानना होगा कुंआ।
मैं अब तक 100% अटक गया हूं। Google पर कुछ भी दूरस्थ रूप से सहायक नहीं मिल रहा है। इस पर आप जो भी सहायता प्रदान कर सकते हैं, उसकी सराहना की जाएगी !! धन्यवाद! =)
क्या प्रत्येक ग्राहक प्रमाण पत्र स्वयं हस्ताक्षरित किया गया है? या आपने जेनरेट किए गए अनुरोधों पर हस्ताक्षर करने के लिए अपना स्वयं का सीए बनाया है? क्लाइंट केवल आपको प्रमाण पत्र के लिए संकेत देगा यदि आपके पास एक स्थापित प्राधिकारी से हस्ताक्षरित है (जिसे सर्वर के ट्रस्ट स्टोर द्वारा निर्धारित किया गया है)। यदि प्रत्येक क्लाइंट प्रमाण स्वयं हस्ताक्षरित है, तो आपको उन सभी जेनरेट किए गए कॉर्ट को सर्वर के ट्रस्ट स्टोर में होना आवश्यक होगा, जो संभव नहीं होगा। – bobz32
मैंने ओपनएसएल का उपयोग कर सर्वर पर क्लाइंट प्रमाण बनाने का प्रयास किया, पी 12 के रूप में निर्यात किया, फिर फ़ायरफ़ॉक्स में इंस्टॉल किया, लेकिन अब मुझे अपाचे से "स्थानीय जारीकर्ता प्रमाणपत्र प्राप्त करने में असमर्थ" त्रुटि मिल रही है। मैंने सर्वर प्रमाण पत्र का उपयोग कर क्लाइंट प्रमाणपत्र पर हस्ताक्षर किए हैं, तो यह क्यों काम नहीं कर रहा है? मैंने ssl.conf में SSLCACertificateFile लाइन को अपरिवर्तित करने का प्रयास किया, लेकिन फिर उसने मुझे पहली समस्या में वापस कर दिया, जिसे पृष्ठ ठीक से लोड किया गया था लेकिन क्लाइंट प्रमाणपत्र को पहचानने के बिना। तो एक बार फिर मैं वर्ग में वापस आ गया हूं .... –