किसी प्रमाणपत्र के सार्वजनिक फ़ील्ड पढ़ने के लिए उससे मेल खाती निजी कुंजी दिखाना कभी ज़रूरी नहीं होता, और इसके लिए ज़रूरी औज़ार हर उस सिस्टम के साथ आते हैं जो VPN समाप्त करता है। जोखिम एक क़दम पहले है: जो फ़ाइल आपको दी गई है वह शायद प्रमाणपत्र ही न हो। PEM प्रमाणपत्र, DER ब्लॉब, PKCS#12 बंडल और OpenVPN प्रोफ़ाइल एक ही नाम से आ सकते हैं और बहुत अलग सामग्री रख सकते हैं, इसलिए कमांड चुनने से पहले कंटेनर की पहचान करें।

तीन तथ्य तय करते हैं कि कौन-सा कमांड सुरक्षित है: फ़ाइल में क्या है, आपको उसमें से क्या पढ़ना है, और आउटपुट कौन देखेगा। इनमें से कोई एक भी ग़लत हुआ तो जाँच ख़ुद ही घटना बन जाती है।

आपको तीन में से कौन-सी फ़ाइल दी गई

PEM प्रमाणपत्र दिखाई देने वाले BEGIN और END चिह्नों वाला टेक्स्ट है, DER फ़ाइल बाइनरी है जिसे इनपुट-फ़ॉर्मेट फ़्लैग चाहिए, और बंडल एक कंटेनर है जो प्रमाणपत्र के साथ कुंजी रख सकता है। file server.crt एक सेकंड में टेक्स्ट को बाइनरी से अलग कर देता है, और पहली पंक्ति पर एक नज़र नंगे प्रमाणपत्र को उस प्रोफ़ाइल से अलग कर देती है जिसमें प्रमाणपत्र अंदर है। यहीं अनुमान लगाना जाँच को घटना में बदल देता है।

अगर फ़ाइल प्रमाणपत्र नहीं बल्कि प्रोफ़ाइल है, तो विपरीत साबित होने तक उसे क्रेडेंशियल मानें। इस धारणा की कोई क़ीमत नहीं है, और यह इस पूरे काम की सबसे आम ग़लती रोकती है।

PEM प्रमाणपत्र के सार्वजनिक फ़ील्ड पढ़ना

जिस प्रमाणपत्र की जाँच का आपको अधिकार है, उसके लिए -noout के साथ x509 सबकमांड सिर्फ़ आपके चुने हुए फ़ील्ड छापता है और कुछ नहीं। बॉडी दबाना ही आउटपुट को मेटाडेटा तक सीमित रखता है, और यही इसे टिकट में चिपकाने के लिए सुरक्षित बनाता है। नीचे दिए सेलेक्टर सार्वजनिक हैं, और openssl x509 दस्तावेज़ बाक़ी की सूची देता है।

openssl x509 -in server.crt -noout -subject -issuer -dates -fingerprint -sha256

स्थानीय रूप से बनाए गए परीक्षण प्रमाणपत्र पर वह कमांड subject और issuer की पंक्ति, notBefore और notAfter का जोड़ा, और एक SHA-256 फ़िंगरप्रिंट छापता है। वे फ़ील्ड ऑब्जेक्ट की पहचान करते हैं; वे वैध भरोसा पथ स्थापित नहीं करते, जो अपने अलग कमांड और अपने अलग उत्तर वाला अलग सत्यापन कार्य है। चेन फ़ाइल भी सिर्फ़ पहला प्रमाणपत्र छाप सकती है जब तक आप ख़ुद फ़ाइल पर पुनरावृत्ति न करें। इस तरह दो फ़ाइलों की तुलना में एक कमांड लगता है और यह तय हो जाता है कि सामने वाला पक्ष वास्तव में कौन-सी प्रस्तुत करता है।

प्रमाणपत्र के साथ कुंजी रखने वाले बंडल

.p12 या .pfx फ़ाइल निजी कुंजी रख सकती है, और पार्सिंग कमांड उसे छाप देता है जब तक आप आउटपुट का वह हिस्सा न दबाएँ। -nokeys के साथ वही कमांड कंटेनर की संरचना अब भी बताता है, जिसमें लिपटा हुआ कुंजी-बैग शामिल है, पर कोई कुंजी सामग्री बाहर नहीं भेजता; वह फ़्लैग हटाएँ और आपके टर्मिनल तथा शेल इतिहास में कुंजी ब्लॉक दिखने लगेगा।

openssl pkcs12 -in bundle.p12 -nokeys -info -passin env:P12PASS

OpenVPN प्रोफ़ाइल वही सामग्री टेक्स्ट के रूप में रखती है, इसलिए सीमा दिखाई देती है अगर आपको पता हो कि कहाँ देखना है। सार्वजनिक सामग्री BEGIN CERTIFICATE और END CERTIFICATE के बीच होती है, जबकि BEGIN PRIVATE KEY और उसकी मेल खाती END पंक्ति के बीच का सब कुछ कुंजी है और उसे होस्ट से बाहर नहीं जाना चाहिए। प्रोफ़ाइल को ज्यों का त्यों कॉपी करना दोनों को प्रकाशित कर देता है।

संदर्भ मान कहीं और से लेना

जिस कनेक्शन को आप सत्यापित करना चाहते हैं उससे पढ़ा गया फ़िंगरप्रिंट कुछ साबित नहीं करता, क्योंकि उसे उसी पक्ष ने दिया है जिस पर आप भरोसा नहीं करते। यह फ़िंगरप्रिंट के ख़िलाफ़ तर्क नहीं है; यह उद्गम के बारे में तर्क है। मान की तुलना ऐसे मान से करें जो ऐसे चैनल से मिला हो जिसमें सामने वाला पक्ष लिख न सके, जैसे आंतरिक रिपॉज़िटरी में प्रकाशित प्रमाणपत्र या हस्ताक्षरित परिवर्तन रिकॉर्ड में छपा हैश।

जहाँ भरोसा स्टोर सत्यापन करता है, उसे करने दें, और अपनी तुलना रखने के बजाय वह जो त्रुटि देता है उसे पढ़ें। मायने यह रखता है कि संदर्भ किसने दिया, यह नहीं कि कौन-सा हैश फ़ंक्शन इस्तेमाल हुआ।

परिणाम साझा करना, और चूक के बाद क्या करें

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

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

संबंधित लेख