मैं पीकेआई को एक वैचारिक दृष्टिकोण से बहुत अच्छी तरह से समझता हूं - अर्थात निजी कुंजी / सार्वजनिक कुंजी - उनके पीछे का गणित, एक प्रमाण पत्र पर हस्ताक्षर करने के लिए हैश और एन्क्रिप्शन का उपयोग, डिजिटल हस्ताक्षर लेनदेन या दस्तावेज़ आदि मैंने उन परियोजनाओं पर भी काम किया है जहां ओपनस्लैक सी पुस्तकालयों का उपयोग संचार और प्रमाणीकरण हासिल करने के लिए समारोहों के साथ किया गया था। मैं भी Opensl कमांड लाइन टूल से बेहद परिचित हूं।
हालाँकि, मेरे पास वेब आधारित PKI सक्षम परियोजनाओं के साथ बहुत कम अनुभव है और इसलिए मैं इसे बेहतर समझने के लिए एक व्यक्तिगत परियोजना को डिज़ाइन और कोड करने का प्रयास कर रहा हूं।
आवश्यकताएँ
यह एक बैंक के लिए वेबसाइट है। सभी इंटरनेट बैंकिंग उपयोगकर्ताओं को कुछ ज्ञात सीए द्वारा जारी किए गए किसी भी प्रमाण पत्र का उपयोग करने की अनुमति है (सत्यापन, Thawte, सौंपना आदि)। उपयोगकर्ता के लिए प्रमाण पत्र खरीदने के लिए बैंक जिम्मेदार नहीं है। ये प्रमाण पत्र बैंकों की वेबसाइट पर प्रमाणीकरण के लिए उपयोग किए जाएंगे। प्लेटफ़ॉर्म / ओएस आदि अभी भी तय नहीं हैं।
डिज़ाइन
मैं सोच रहा था कि प्रमाणीकरण करने का सबसे अच्छा तरीका क्या है।
मैंने देखा कि अपाचे के पास 2 तरीके ssl को सक्षम करने का एक तरीका है - इस मामले में, मुझे लगता है कि वेबसाइट पर नेविगेट करने से उपयोगकर्ता से स्वचालित रूप से एक प्रमाण पत्र मांगा जाएगा। लेकिन मुझे यकीन नहीं है कि यह पर्याप्त है क्योंकि ऐसा लगता है कि यह सब सत्यापित करता है कि क्या कोई प्रमाण पत्र किसी विश्वसनीय सीए द्वारा हस्ताक्षरित है और यह भी हो सकता है कि क्या यह प्रमाण पत्र की विषय पंक्तियों की एक सफेद सूची में आता है आदि लेकिन यह पर्याप्त नहीं है एक बैंक मामले के लिए क्योंकि आपको एक प्रमाण पत्र के साथ एक बैंकुसराइड को जोड़ने में सक्षम होना चाहिए।
IIS एक ऐसा तरीका है जिसके द्वारा मेरे पास सक्रिय निर्देशिका में प्रत्येक उपयोगकर्ता के लिए एक प्रमाणपत्र संग्रहीत किया जा सकता है। यह वही है जो मैंने कुछ MSDN लेखों को पढ़ने से समझा। आप IIS में 2 तरीके से SSL चालू करते हैं और फिर जब उपयोगकर्ता वेबसाइट पर नेविगेट करने का प्रयास करता है, तो IIS स्वीकृत CA की सूची के साथ ब्राउज़र को एक अनुरोध भेजेगा और ब्राउज़र उपयोगकर्ता को अपने सर्टिफिकेट से एक उपयुक्त प्रमाणपत्र लेने देगा और उसे भेज देगा to backend। मैं मान रहा हूँ कि IIS २ काम करेगा
- सुनिश्चित करें कि उपयोगकर्ता के पास सर्टिफिकेशन के तहत (कवर वार्ताओं के तहत) निजी कुंजी है
- AD उपयोगकर्ता-प्रमाणपत्र मैपिंग के आधार पर, IIS उपयोगकर्ता नाम को एप्लिकेशन को रिपोर्ट करेगा।
यह करने के लिए वेबसर्वर के आधार पर क्रिप्टो कार्यों को कॉल करके प्रमाणीकरण की खोज करें।
- एक उपयोगकर्ता स्क्रीन दिखाएं जहां वह एक प्रमाण पत्र अपलोड करता है और आवेदन सुनिश्चित करता है कि उपयोगकर्ता के पास सर्टिफिकेशन के लिए निजी कुंजी है (फ्रंट-एंड से पूछकर सर्टिफिकेट का उपयोग करके कुछ स्ट्रिंग पर हस्ताक्षर करने के लिए)।
- एप्लिकेशन में एक डेटाबेस होता है, जिसमें कुछ डेटा संग्रहीत होता है, जो प्रत्येक उपयोगकर्ता को अपने उपयोगकर्ता के लिए मैप करने की अनुमति देता है। यह हो सकता है
- प्रत्येक उपयोगकर्ता के लिए पूरे प्रमाण पत्र
- प्रत्येक उपयोगकर्ता आईडी के अनुरूप सीए और प्रमाणित सीरियल नंबर।
मैं सोच रहा था कि आमतौर पर इस्तेमाल की जाने वाली विधि कौन सी है? सर्वोत्तम अभ्यास क्या हैं? अगर मुझे # 3 के साथ जाना चाहिए, तो ऐसा करने के सबसे अच्छे तरीके क्या हैं?
कुछ जो आसानी से स्मार्टफोन ऐप के साथ भी काम कर सकते हैं, एक अतिरिक्त बोनस होगा।
अपडेट करें
मुझे अपने कथन को स्पष्ट करें "प्रमाणीकरण भाग को स्वयं कोड करें" क्योंकि कुछ उत्तरों से लगता है कि यह गलत समझा गया है - स्पष्ट नहीं होने के लिए मेरा बुरा।
इसका मतलब यह नहीं है कि मैं क्रिप्टो सामान खुद लिखता हूं। इसका मतलब सिर्फ इतना है कि मैं वास्तव में आईआईएस या किसी अन्य वेबसर्वर के आधार पर इसके बजाय स्पष्ट रूप से क्रिप्टो दिनचर्या को कॉल करूंगा।