remote-cert-tls server: OpenVPN प्रोफ़ाइल में यह क्या जाँचता है
यह निर्देश साथी के प्रमाणपत्र में एन्कोड की गई भूमिका की जाँच करता है, उसका नाम नहीं। कुछ भी बंद करने से पहले भूमिका, विश्वास एंकर और होस्टनाम जाँच की तुलना करें।
तीन अलग प्रश्नों के उत्तर OpenVPN प्रोफ़ाइल के तीन अलग हिस्से देते हैं, और उन्हें मिलाना ही वह तरीका है जिससे लोग एक काम करने वाली जाँच बंद कर देते हैं। क्या साथी का प्रमाणपत्र उस प्राधिकरण द्वारा हस्ताक्षरित है जिस पर मैं भरोसा करता हूँ? क्या वह प्रमाणपत्र TLS सर्वर भूमिका घोषित करता है? क्या वह ठीक वही सर्वर है जहाँ मैं पहुँचना चाहता था? remote-cert-tls server केवल बीच के प्रश्न का उत्तर देता है, और यह प्रमाणपत्र के अंदर के एक्सटेंशन पढ़कर करता है।
तीन जाँचें जिन्हें दिमाग में मिलाना आसान है
विश्वास एंकर ca निर्देश में रहता है। भूमिका जाँच remote-cert-tls की है। पहचान जाँच verify-x509-name की है, जब कोई प्रोफ़ाइल इसका उपयोग करती है, या डिप्लॉयमेंट जो भी नाम-जाँच जोड़ता है उसकी।
वे अलग-अलग विफलताओं को कवर करती हैं:
| Question | Directive | Failure it catches |
|---|---|---|
| Who signed this? | ca | Certificate from an unrelated authority |
| Is this a server? | remote-cert-tls | Client certificate presented by a peer |
| Is this my server? | verify-x509-name | Another valid server from the same CA |
एक प्रोफ़ाइल में तीनों हो सकते हैं और फिर भी कमजोर हो सकती है यदि CA बहुत व्यापक रूप से साझा किया गया है, जो कुंजी-प्रबंधन का प्रश्न है, निर्देश का नहीं।
भूमिका जाँच क्या पढ़ती है
निर्देश एक मैक्रो है। यह कुंजी-उपयोग आवश्यकता और विस्तारित-कुंजी-उपयोग आवश्यकता में फैलता है जो TLS वेब सर्वर भूमिका का नाम लेती है, इसलिए साथी के प्रमाणपत्र को वह उद्देश्य वास्तव में घोषित करना चाहिए। क्लाइंट प्रमाणीकरण के लिए जारी प्रमाणपत्र इसे पूरा नहीं करता, भले ही एक ही प्राधिकरण ने दोनों पर हस्ताक्षर किए हों।
यह मायने रखता है क्योंकि छोटे डिप्लॉयमेंट में साझा CA आम है। एक प्राधिकरण हर क्लाइंट और सर्वर पर हस्ताक्षर करता है, और भूमिका जाँच के बिना उनमें से कोई भी प्रमाणपत्र हैंडशेक का सर्वर पक्ष पूरा कर सकता था। जाँच उस परिदृश्य को असंभव नहीं बनाती, बल्कि उसका तुच्छ संस्करण हटा देती है।
निर्देश डिज़ाइन से असममित है: क्लाइंट remote-cert-tls server रखते हैं, और सर्वर remote-cert-tls client रखते हैं। इन्हें बदल दें और हर कनेक्शन भूमिका त्रुटि से विफल हो जाएगा जो टूटे प्रमाणपत्र जैसी दिखती है।
पुरानी प्रोफ़ाइलें कभी-कभी उसी उद्देश्य के लिए ns-cert-type का उपयोग करती हैं। वर्तमान मैनुअल पृष्ठ उस विकल्प को अप्रचलित मानते हैं, इसलिए जो प्रोफ़ाइल अभी भी उस पर निर्भर है, उसे डीबग करने के बजाय माइग्रेट करना उचित है।
इसे बंद करना समाधान क्यों लगता है
जब भूमिका जाँच विफल होती है, तो कनेक्शन सत्यापन त्रुटि के साथ रुक जाता है और स्पष्ट कदम पंक्ति को हटाना है। फिर कनेक्शन ऊपर आ जाता है, जो प्रगति जैसा लगता है और वास्तव में वही विफलता मोड है जिसे रोकने के लिए निर्देश मौजूद है। अब आप ऐसे साथी को स्वीकार करते हैं जिसका प्रमाणपत्र कभी उस भूमिका के लिए नहीं बना था।
इसके बजाय त्रुटि पढ़ें। यह उस जाँच का नाम बताती है जो विफल हुई, और दूसरी ओर के प्रमाणपत्र की जाँच करके देखा जा सकता है कि वह वास्तव में कौन से एक्सटेंशन रखता है। दो मिनट का पठन तय करता है कि दोष जारी करने में है या कॉन्फ़िगरेशन में। अनुमान लगाने में एक दोपहर लगती है और अक्सर कमजोर प्रोफ़ाइल पर समाप्त होती है। नवीनीकृत सर्वर प्रमाणपत्र जिसने अपना विस्तारित कुंजी-उपयोग खो दिया है, नवीनीकरण में वास्तविक दोष है, क्लाइंट को ढीला करने का कारण नहीं।
नाम जाँच एक अलग निर्देश है
भूमिका जाँच को संतुष्ट करने का अर्थ है कि साथी आपके प्राधिकरण द्वारा हस्ताक्षरित कोई सर्वर है। यह नहीं बताता कि कौन सा, जो तब मायने रखता है जब वही CA कई गेटवे के लिए प्रमाणपत्र जारी करता है और उनमें से एक समझौता किया गया या पुनःउद्देश्यित है।
verify-x509-name प्रमाणपत्र के विषय की तुलना आपके द्वारा कॉन्फ़िगर किए गए मान से करता है, सटीक विषय, उपसर्ग या एकल फ़ील्ड के लिए मिलान मोड के साथ। वह फ़ील्ड उपयोग करें जो वास्तव में गेटवे की पहचान करता है, और नाम बदलने पर उसे जानबूझकर अपडेट करने की अपेक्षा रखें।
दोनों में से कोई भी निर्देश अच्छे कुंजी-प्रबंधन का विकल्प नहीं है। यदि क्लाइंट कुंजी फ़ाइल प्रोफ़ाइल के साथ इधर-उधर कॉपी होती है, तो साथी की पहचान वितरण सूची जितनी ही मजबूत है।
प्रोफ़ाइल संपादित करने से पहले प्रमाणपत्र जाँचें
साथी का प्रमाणपत्र और क्लाइंट लॉग उसी क्रम में पढ़ें। प्रमाणपत्र बताता है कि वह कौन सी भूमिकाएँ घोषित करता है; लॉग बताता है कि किस जाँच ने उसे अस्वीकार किया।
ये कमांड एक विस्तृत कनेक्शन से उपयोग-एक्सटेंशन और सत्यापन पंक्तियाँ प्रिंट करते हैं:
openssl x509 -in server.crt -noout -text | grep -A1 -E "Key Usage|Extended Key Usage"
sudo openvpn --config client.ovpn --verb 4 2>&1 | grep -i verifyयदि एक्सटेंशन सर्वर भूमिका दिखाते हैं और लॉग अभी भी भूमिका विफलता की रिपोर्ट करता है, तो प्रोफ़ाइल संभवतः खराब प्रमाणपत्र के बजाय गलत प्रमाणपत्र फ़ाइल की ओर इशारा कर रही है। यदि एक्सटेंशन केवल क्लाइंट प्रमाणीकरण दिखाते हैं, तो क्लाइंट को देखना बंद करें और जारी करना ठीक करें। किसी भी स्थिति में, कनेक्शन को स्वस्थ कहने से पहले जाँच बहाल करें, क्योंकि सत्यापन हटाने के बाद सफल हैंडशेक उस त्रुटि से कम साबित करता है जिसे उसने बदला।