SSL/TLS सर्टिफिकेट जेनरेट करने की प्रक्रिया कई लिनक्स सिस्टम एडमिनिस्ट्रेटर के लिए एक सामान्य कार्य है। सौभाग्य से, भले ही आप एडमिनिस्ट्रेटर न हों, OpenSSL का उपयोग करके ऐसा करना आसान है, एक ओपन-सोर्स टूल जो कई लिनक्स वितरणों पर डिफ़ॉल्ट रूप से इंस्टॉल होता है। यहां हम बताते हैं कि OpenSSL क्या है, इसे कैसे इंस्टॉल करें, और सबसे महत्वपूर्ण बात, अपने सिस्टम पर SSL और TLS सर्टिफिकेट जेनरेट करने के लिए इसका उपयोग कैसे करें।
OpenSSL क्या है?
OpenSSL नेटवर्क ट्रैफ़िक के एन्क्रिप्शन के लिए ओपन-सोर्स SSL और TLS कार्यान्वयन प्रदान करने के लिए OpenSSL प्रोजेक्ट द्वारा विकसित एक लाइब्रेरी है। यह विभिन्न यूनिक्स-आधारित वितरणों के लिए आसानी से उपलब्ध है और इसका उपयोग सर्टिफिकेट, RSA प्राइवेट की जेनरेट करने और सामान्य क्रिप्टोग्राफी-संबंधी कार्यों को करने के लिए किया जा सकता है।
सेल्फ-साइन SSL सर्टिफिकेट की सीमा
जब आप OpenSSL का उपयोग करके SSL सर्टिफिकेट जेनरेट करते हैं, तो इसे "सेल्फ-साइन" माना जाता है। इसका मतलब है कि SSL सर्टिफिकेट अपनी प्राइवेट की के साथ साइन किया गया है न कि सर्टिफिकेट अथॉरिटी (CA) से।
इसलिए, SSL सर्टिफिकेट को "विश्वसनीय" नहीं माना जा सकता और इसका उपयोग किसी भी सार्वजनिक-सामना करने वाली साइट के लिए नहीं किया जाना चाहिए। यदि उपयोग किया जाता है, तो उपयोगकर्ताओं को उनके ब्राउज़र से सर्टिफिकेट के बारे में चेतावनी दिखाई देगी।
एक सेल्फ-साइन सर्टिफिकेट स्थानीय विकास या बैकग्राउंड में चलने वाले किसी भी ऐप के लिए उपयोगी है जो इंटरनेट का सामना नहीं करते हैं।
वैकल्पिक रूप से, आप Let's Encrypt का उपयोग कर सकते हैं या Comodo CA जैसे विश्वसनीय प्राधिकरण द्वारा सत्यापित सर्टिफिकेट प्राप्त कर सकते हैं।
इंस्टॉलेशन
अधिकांश लिनक्स वितरणों में डिफ़ॉल्ट रूप से OpenSSL का एक संस्करण अंतर्निहित होता है। यदि नहीं, तो आप इसे आसानी से इंस्टॉल कर सकते हैं।
आप इसे apt कमांड का उपयोग करके उबंटू और डेबियन पर इंस्टॉल कर सकते हैं:
sudo apt install openssl
सेंटओएस (या इसके विकल्प) पर, आप इसे yum कमांड का उपयोग करके इंस्टॉल कर सकते हैं:
sudo yum install openssl
आप इसे इसकी वेबसाइट से ".tar.gz" फ़ाइल के रूप में आसानी से डाउनलोड भी कर सकते हैं।
बुनियादी उपयोग
अब जब आपके पास OpenSSL इंस्टॉल है, तो हम प्रोग्राम द्वारा प्रदान किए जाने वाले कुछ बुनियादी फ़ंक्शन देख सकते हैं।
आप अपने OpenSSL इंस्टॉलेशन के बारे में संस्करण और अन्य प्रासंगिक जानकारी देखकर शुरू कर सकते हैं:
openssl version -a
आप प्रदान किए गए मैनुअल को देख सकते हैं:
openssl help
कॉन्फ़िगरेशन फ़ाइल का उपयोग करके सर्टिफिकेट जेनरेट करना
OpenSSL का उपयोग करके सर्टिफिकेट जेनरेट करना कई तरीकों से संभव है। उनमें से एक कॉन्फ़िगरेशन फ़ाइल का उपयोग करना है जो संगठन के बारे में विवरण निर्दिष्ट करेगी।
शुरू करने के लिए, आप "config.conf" नामक एक कॉन्फ़िगरेशन फ़ाइल बना सकते हैं और नैनो का उपयोग करके इसे संपादित कर सकते हैं:
sudo nano example.conf
यहां कॉन्फ़िगरेशन फ़ाइल की सामग्री का एक उदाहरण है:
[req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext x509_extensions= v3_ca distinguished_name = dn [dn] C = US ST = California L = Los Angeles O = Org OU = Sales emailAddress = test@test.com CN = www.org.test.com [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:true [req_ext] subjectAltName = @alt_names [alt_names] DNS.1 = test.example.com
आप बस इसे फ़ाइल में कॉपी और पेस्ट कर सकते हैं और अपनी संगठन की जानकारी को प्रतिबिंबित करने के लिए आवश्यक परिवर्तन कर सकते हैं।
अगला, आपको एक RSA प्राइवेट की जेनरेट करनी होगी, जिसका उपयोग तब रूट सर्टिफिकेट जेनरेट करने के लिए किया जाएगा:
openssl genrsa -out example.key 2048
इस मामले में -out फ्लैग का उपयोग उत्पन्न होने वाली की के नाम को निर्दिष्ट करने के लिए किया जाता है। RSA की के लिए डिफ़ॉल्ट 2048 बिट्स का की आकार भी निर्दिष्ट किया गया है।
आपको एक सर्टिफिकेट साइनिंग रिक्वेस्ट (CSR) भी जेनरेट करनी होगी:
openssl req -new -key example.key -out example.csr -config example.conf
इस मामले में, -key फ्लैग का उपयोग RSA की को निर्दिष्ट करने के लिए किया जाता है, -out फ्लैग CSR फ़ाइल का नाम निर्दिष्ट करता है और -config फ्लैग का उपयोग कॉन्फ़िगरेशन फ़ाइल का नाम निर्दिष्ट करने के लिए किया जाता है।
इसके बाद, आप एक रूट सर्टिफिकेट जेनरेट कर सकते हैं, जिसका उपयोग हमारे अंतिम सर्टिफिकेट को जेनरेट करने के लिए किया जाता है:
openssl req -x509 -sha256 -nodes -new -key example.key -out example.crt -config example.conf
इस रूट सर्टिफिकेट को जेनरेट करने की प्रक्रिया में, -sha256 फ्लैग का उपयोग SHA256 को मैसेज डाइजेस्ट के रूप में निर्दिष्ट करने के लिए किया जाता है।
अब, अंतिम चरण के लिए, हम अंत में अपना सर्टिफिकेट जेनरेट करने के लिए निम्न टाइप कर सकते हैं:
openssl x509 -sha256 -CAcreateserial -req -days 30 -in example.csr -extfile example.conf -CA example.crt -CAkey example.key -out final.crt
-CA फ्लैग रूट सर्टिफिकेट निर्दिष्ट करता है, -CAkey फ्लैग प्राइवेट की निर्दिष्ट करता है और -extfile कॉन्फ़िगरेशन फ़ाइल का नाम निर्दिष्ट करता है। "final.crt" फ़ाइल वह SSL सर्टिफिकेट होगी जो आप चाहते हैं।
कॉन्फ़िगरेशन फ़ाइल के बिना सर्टिफिकेट जेनरेट करना
वैकल्पिक रूप से, आप कॉन्फ़िगरेशन फ़ाइल के बिना OpenSSL का उपयोग करके सर्टिफिकेट भी जेनरेट कर सकते हैं।
आप RSA प्राइवेट की जेनरेट करके शुरू कर सकते हैं:
openssl genrsa -out example.key 2048
अगला, आपको CSR जेनरेट करनी होगी:
openssl req -new -key example.key -out example.csr
CSR जेनरेट करते समय, आपको अपने संगठन के बारे में सवालों के जवाब देने के लिए प्रेरित किया जाएगा।
अंत में, हम सर्टिफिकेट itself जेनरेट कर सकते हैं:
openssl x509 -req -days 30 -in example.csr -signkey example.key -out example.crt
की और सर्टिफिकेट का सत्यापन
की और सर्टिफिकेट को OpenSSL का उपयोग करके -check फ्लैग के साथ आसानी से जांचा और सत्यापित किया जा सकता है:
openssl rsa -check -in example.key
आप सर्टिफिकेट साइनिंग रिक्वेस्ट की जांच कर सकते हैं:
openssl req -text -noout -in example.csr
और सर्टिफिकेट भी:
openssl x509 -text -noout -in example.crt
अक्सर पूछे जाने वाले प्रश्न
1. क्या मुझे अभी भी हार्टब्लीड के बारे में चिंता करने की ज़रूरत है?
हार्टब्लीड (CVE-2014-0160) 2014 में OpenSSL में पाई गई एक पुरानी भेद्यता है। TLS-सर्वर और क्लाइंट दोनों OpenSSL चल रहे थे प्रभावित थे। इसकी खोज के कुछ दिनों बाद एक पैच जल्दी जारी किया गया था, और यह भेद्यता 2022 में चिंता की बात नहीं है जब तक आप OpenSSL का एक आधुनिक और अप-टू-डेट संस्करण चला रहे हैं।
यदि आप डेबियन और उबंटू-आधारित सिस्टम पर OpenSSL का उपयोग कर रहे हैं, तो आप निम्न कमांड चलाकर इसे हमेशा अपडेट कर सकते हैं:
sudo apt update && sudo apt upgrade openssl
2. SSL सर्टिफिकेट समाप्त होने से पहले कितने समय तक चलते हैं?
यह आपके द्वारा सर्टिफिकेट जेनरेट करते समय चुने गए मान पर निर्भर करता है। इसे सर्टिफिकेट जेनरेट करते समय -days फ्लैग का उपयोग करके निर्दिष्ट किया जा सकता है।