P12 से निजी कुंजी के बिना प्रमाणपत्र निर्यात करें
PKCS12 बंडल कुंजियाँ और प्रमाणपत्र साथ रखता है। पहले संरचना पढ़ें, फिर सुरक्षा हटाने के बजाय -nokeys से प्रमाणपत्र चुनें।
सहायता टिकट पूछता है कि VPN बंडल के अंदर कौन-सा प्रमाणपत्र है, और पहली प्रवृत्ति सब कुछ निर्यात करके संलग्न करने की होती है। P12 फ़ाइल प्रमाणपत्रों और निजी कुंजी की सामग्री को एक ही कंटेनर में पैक करती है, इसलिए सब कुछ निर्यात करना ठीक वही है जो आपको नहीं भेजना चाहिए। प्रश्न का उत्तर देने वाला कमांड चयन की समस्या है, रूपांतरण की नहीं। चार फ़्लैग तय करते हैं कि कंटेनर का कौन-सा आधा हिस्सा आपको मिलेगा, और उनमें से दो वास्तविकता से अधिक सुरक्षित लगते हैं।
कंटेनर को खाली करने के बजाय पढ़ना शुरू करें।
PKCS12 फ़ाइल वास्तव में क्या रखती है
PKCS12 कंटेनर में एक या अधिक प्रमाणपत्र, संभवतः एक निजी कुंजी, और सामग्री पर एक message authentication code होता है। प्रमाणपत्रों में आपकी क्लाइंट पहचान का लीफ़ प्रमाणपत्र और वे मध्यवर्ती प्रमाणपत्र शामिल हो सकते हैं जो इसे CA से श्रृंखलाबद्ध करते हैं। कुंजी, जब मौजूद हो, वही चीज़ है जो फ़ाइल को दस्तावेज़ के बजाय रहस्य बनाती है।
यही अंतर -nokeys के होने और यही वह फ़्लैग होने का कारण है जिसकी इस कार्य को आवश्यकता है।
कुंजी लिखे बिना बंडल पढ़ें
निरीक्षण रूप संरचना और एल्गोरिद्म का विवरण प्रिंट करता है और कुछ नहीं लिखता: openssl pkcs12 -in client.p12 -info -noout। यह आयात पासवर्ड माँगता है, जो उस मान के लिए सही जगह है, और बताता है कि फ़ाइल में कुंजी है या नहीं। -passin env:PKCS12_PASS का उपयोग तब करें जब पासवर्ड टाइप न किया जा सके, क्योंकि shell कमांड में पासवर्ड प्रक्रिया सूची में पासवर्ड होता है। यह चरण कुछ भी निर्यात नहीं करता, और यही पूरी बात है।
आउटपुट को तीन चीज़ों के लिए पढ़ें: कितने प्रमाणपत्र, कुंजी मौजूद है या नहीं, और कौन-से एल्गोरिद्म इसकी रक्षा करते हैं।
-nokeys का उपयोग करें और इसे -nocerts से न मिलाएँ
-nokeys निजी कुंजियों को बाहर रखता है और प्रमाणपत्र छोड़ देता है। -clcerts इसे क्लाइंट प्रमाणपत्रों तक सीमित करता है, -cacerts इसे CA प्रमाणपत्रों तक सीमित करता है, और ये दोनों फ़िल्टर हैं, विकल्प नहीं। -nocerts उसी विचार की सुरक्षित वर्तनी जैसा पढ़ा जाता है और विपरीत अर्थ देता है: कोई प्रमाणपत्र नहीं, जो केवल कुंजियाँ छोड़ता है। इसे प्रमाणपत्र निर्यात में मिलाना वही तरीका है जिससे निजी कुंजी डिस्क पर पहुँचती है।
दो पंक्तियों वाला वह रूप जो प्रमाणपत्र फ़ाइल और CA फ़ाइल बनाता है, और कुछ नहीं, यह है:
openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pemपुराने बंडलों को OpenSSL 3 पर -legacy चाहिए ताकि वे अपना पुराना एन्क्रिप्शन पढ़ सकें, और यह फ़्लैग बदलता है कि parser क्या स्वीकार करता है, न कि वह क्या उत्सर्जित करता है। यदि विश्लेषण असमर्थित एल्गोरिद्म की त्रुटि से विफल हो, तो -legacy जोड़ना सही पहला कदम है और MAC जाँच छोड़ना नहीं।
आउटपुट जाँचें, निकास कोड नहीं
शून्य निकास स्थिति कहती है कि कमांड चला, यह नहीं कि फ़ाइल में वही है जिसकी आप अपेक्षा करते हैं। आउटपुट में प्रमाणपत्र गिनें और subject तथा तिथियाँ पढ़ें: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint। फ़िंगरप्रिंट की तुलना उससे करें जिसकी सहायता टीम अपेक्षा करती है, क्योंकि दो क्लाइंट प्रमाणपत्रों वाला बंडल दो ब्लॉक वाली फ़ाइल बनाता है और अधिकांश उपकरण केवल पहला पढ़ते हैं। उद्देश्य, विश्वास और कुंजी मिलान फिर से अलग परीक्षण हैं।
जो प्रमाणपत्र पार्स हो सकता है वह प्रमाणपत्र पार्स हो सकता है। यह वह प्रमाणपत्र नहीं है जिसे VPN स्वीकार करता है।
तय करें कि क्या आपको फ़ाइलों की आवश्यकता है
यदि प्राप्त करने वाला क्लाइंट PKCS12 सीधे आयात करता है, तो मूल बंडल को स्वीकृत चैनल से भेजना और पासवर्ड अलग रखना आसान है और सुरक्षा बनाए रखता है। निष्कर्षण निरीक्षण, PEM की आवश्यकता वाले क्लाइंट, या ऐसे सहायता मामले के लिए है जिसने विशिष्ट आर्टिफ़ैक्ट माँगा हो। प्रत्येक निष्कर्षण एक परत हटाता है और उसका कारण होना चाहिए।
सार्वजनिक प्रमाणपत्रों में निजी कुंजी नहीं होती, लेकिन उनमें नाम और संगठन का विवरण होता है। फ़ाइल के बजाय वे फ़ील्ड साझा करें जो टिकट ने माँगे थे, जब तक कि फ़ाइल ही माँगी गई हो।