bg-tutorials

GlassFish पर CSR कैसे जेनरेट करें

यह ट्यूटोरियल आपको Java keytool यूटिलिटी का उपयोग करके GlassFish (अब Eclipse GlassFish) के लिए CSR (Certificate Signing Request) कैसे जेनरेट करें, यह दिखाता है।

GlassFish एक मददगार तरीके से असामान्य है: एक फ्रेश इंस्टॉल पहले से ही एक keystore (Eclipse GlassFish 7.1 और नए वर्जन पर keystore.p12, या पुराने बिल्ड्स पर keystore.jks) और s1as alias के तहत एक डिफ़ॉल्ट सर्टिफिकेट एंट्री के साथ आता है। आप इस मौजूदा key से सीधे CSR जेनरेट कर सकते हैं, या इसे उसी alias के तहत एक नई key से बदल सकते हैं। दोनों ही मामलों में, जब आप साइन किया गया सर्टिफिकेट इम्पोर्ट करते हैं तो वही alias दोबारा इस्तेमाल होता है, इसलिए key, CSR और जारी किया गया सर्टिफिकेट सभी एक ही जगह पर रहते हैं।

आपको किन चीज़ों की आवश्यकता होगी

  • एक चालू GlassFish (या Eclipse GlassFish) इंस्टॉलेशन। डिफ़ॉल्ट keystore डोमेन की config डायरेक्टरी में रहता है, उदाहरण के लिए Eclipse GlassFish 7.1 और नए वर्जन पर glassfish/domains/domain1/config/keystore.p12, या पुराने बिल्ड्स पर keystore.jks
  • एक Java इंस्टॉलेशन ताकि keytool कमांड उपलब्ध हो। GlassFish एक JDK के साथ आता है, इसलिए keytool आमतौर पर पहले से ही path पर होता है। keytool -help से इसकी पुष्टि करें।
  • GlassFish सर्वर पर शेल या टर्मिनल एक्सेस। प्राइवेट key इसी सर्वर पर रहनी चाहिए।
  • वह सटीक fully qualified domain name (FQDN) जिसे आप सुरक्षित करना चाहते हैं, उदाहरण के लिए www.yourdomain.com, साथ ही SAN फील्ड के लिए कोई भी अतिरिक्त होस्टनेम।
  • CSR के Distinguished Name के लिए आपके संगठन का कानूनी विवरण (देश, राज्य, स्थान, संगठन का नाम)।
  • डोमेन के लिए GlassFish का मास्टर पासवर्ड। फैक्ट्री डिफ़ॉल्ट changeit है; प्रोडक्शन सिस्टम्स पर इसे asadmin change-master-password से बदलें।

CSR जेनरेट करने के दो तरीके

अगर आपने पहले से ही अपना CSR जेनरेट कर लिया है, तो सीधे CSR सबमिट करें पर जाएं और फिर GlassFish पर अपना SSL सर्टिफिकेट इंस्टॉल करें पर।

GlassFish पर keytool के दो सामान्य फ्लो होते हैं। वह चुनें जो आपकी स्थिति से मेल खाता हो:

  • विकल्प A: मौजूदा s1as key से CSR जेनरेट करें (अनुशंसित)। एक नए GlassFish डोमेन में पहले से ही डिफ़ॉल्ट keystore (7.1+ पर keystore.p12, पुराने बिल्ड्स पर keystore.jks) के अंदर s1as alias के तहत एक प्राइवेट key होती है। सबसे तेज़, सबसे कम जोखिम वाला तरीका यह है कि उस key को जस का तस रहने दें और बस उससे एक CSR एक्सपोर्ट करें। विकल्प A पर जाएं।
  • विकल्प B: डिफ़ॉल्ट s1as key को एक नई key से बदलें, फिर CSR जेनरेट करें। इसका उपयोग तब करें जब आप एक ज्ञात, वर्तमान key साइज़ और DN चाहते हों, या यदि आपको संदेह है कि डिफ़ॉल्ट key का उपयोग हो चुका है या यह उजागर हो चुकी है। विकल्प B पर जाएं।

आप जो भी विकल्प चुनें, alias s1as ही बना रहना चाहिए (या, यदि आप इसे बदलते हैं, तो आपको domain.xml को भी उसी के अनुसार अपडेट करना होगा)। GlassFish का HTTPS listener alias के आधार पर सर्टिफिकेट खोजता है, इसलिए अगर alias मेल नहीं खाता तो GlassFish key नहीं ढूंढ पाएगा और TLS शुरू नहीं होगा।

विकल्प A: मौजूदा s1as key से CSR जेनरेट करें

चरण 1: GlassFish config डायरेक्टरी पर स्विच करें

एक टर्मिनल खोलें और उस डायरेक्टरी पर जाएं जिसमें आपके डोमेन का keystore है। डिफ़ॉल्ट इंस्टॉल पर, यह domain1 का config फ़ोल्डर होता है:

cd /opt/glassfish7/glassfish/domains/domain1/config

पथ को उस जगह के अनुसार समायोजित करें जहां आपने GlassFish इंस्टॉल किया है (पुराने GlassFish 4 बिल्ड्स इंस्टॉल को glassfish4/ टॉप फ़ोल्डर के अंदर नेस्ट करते हैं; Eclipse GlassFish 6, 7, और 8 आमतौर पर glassfish7/, glassfish8/ या इसी तरह के फ़ोल्डर में इंस्टॉल होते हैं)। अगर आपने अपना खुद का डोमेन बनाया है, तो domain1 की जगह उस डोमेन का नाम इस्तेमाल करें। इस डायरेक्टरी में keystore फ़ाइल नाम की पुष्टि करने के लिए ls *.p12 *.jks चलाएं: Eclipse GlassFish 7.1 और नए वर्जन पर आपको keystore.p12 दिखेगा; पुराने बिल्ड्स पर आपको keystore.jks दिखेगा। नीचे दिए गए कमांड्स में जहां भी keystore.jks दिखे, वहां वह फ़ाइल नाम बदल दें।

चरण 2: पुष्टि करें कि s1as एंट्री मौजूद है

keystore की सामग्री की सूची बनाएं और जांचें कि s1as मौजूद है और यह एक PrivateKeyEntry है:

keytool -list -v -keystore keystore.jks -alias s1as

keystore पासवर्ड दर्ज करें (फैक्ट्री डिफ़ॉल्ट changeit; प्रोडक्शन सर्वर पर यह आपके डोमेन मास्टर पासवर्ड से मेल खाना चाहिए)। आउटपुट में Entry type: PrivateKeyEntry लाइन शामिल होनी चाहिए। यदि इसके बजाय आपको Alias <s1as> does not exist संदेश मिलता है, तो विकल्प B पर स्विच करें और एक नई एंट्री बनाएं।

चरण 3: SAN के साथ CSR एक्सपोर्ट करें

आधुनिक ब्राउज़र और TLS क्लाइंट सर्टिफिकेट को केवल Common Name के आधार पर नहीं, बल्कि Subject Alternative Name (SAN) एक्सटेंशन के आधार पर वैलिडेट करते हैं। SANs को सीधे CSR में रिक्वेस्ट करें ताकि CA उन्हें जारी किए गए सर्टिफिकेट में शामिल करे:

keytool -certreq 
  -alias s1as 
  -keystore keystore.jks 
  -file glassfish.csr 
  -ext san=dns:yourdomain.com,dns:www.yourdomain.com

फ्लैग्स का मतलब:

  • -alias s1as: मौजूदा GlassFish सर्टिफिकेट alias। इस alias के तहत की प्राइवेट key रिक्वेस्ट पर साइन करती है।
  • -keystore keystore.jks: डिफ़ॉल्ट GlassFish keystore फ़ाइल। Eclipse GlassFish 7.1 और नए वर्जन keystore.p12 नाम की एक PKCS12 keystore के साथ आते हैं; पुराने बिल्ड्स keystore.jks नाम की JKS keystore इस्तेमाल करते हैं। इस डायरेक्टरी में जो भी फ़ाइल नाम मौजूद है उसका उपयोग करें। कमांड दोनों ही स्थितियों में समान है; keytool फॉर्मेट का पता खुद लगा लेता है।
  • -file glassfish.csr: CSR के लिए आउटपुट फ़ाइल नाम। आप कोई भी नाम चुन सकते हैं।
  • -ext san=dns:…: Subject Alternative Name एक्सटेंशन। हर वह होस्टनेम सूचीबद्ध करें जिसे सर्टिफिकेट को कवर करना चाहिए, जिसमें बेयर एपेक्स (yourdomain.com) और www सबडोमेन दोनों शामिल हों। अधिक एंट्री कॉमा से अलग करके जोड़ें, उदाहरण के लिए dns:api.yourdomain.com

keytool keystore पासवर्ड के लिए पूछता है और CSR को वर्तमान डायरेक्टरी में glassfish.csr में लिखता है। CSR का Subject (Distinguished Name) उससे लिया जाता है जो s1as एंट्री में संग्रहीत है; एक फ्रेश GlassFish इंस्टॉल पर यह ऑटो-जेनरेटेड self-signed सर्टिफिकेट होता है, इसलिए DN आपकी कंपनी से मेल नहीं खाएगा। अधिकांश CA केवल Common Name और SAN सूची की पुष्टि करते हैं और आपको ऑर्डर फॉर्म में बाकी DN को ओवरराइड करने देते हैं, लेकिन अगर आपको ऐसा CSR चाहिए जिसका DN पहले से आपकी कानूनी कंपनी का विवरण रखता हो, तो विकल्प B का उपयोग करें।

विकल्प B: डिफ़ॉल्ट s1as key को एक नई key से बदलें

इस विकल्प का उपयोग तब करें जब आप key साइज़ और DN पर पूर्ण नियंत्रण चाहते हों, या जब आप फैक्ट्री-जेनरेटेड key को दोबारा इस्तेमाल न करना चाहें। फ्लो यह है: डिफ़ॉल्ट s1as एंट्री को हटाएं, उसी alias के तहत एक नई key बनाएं, फिर CSR एक्सपोर्ट करें। alias को s1as ही रखने से बाद में आपको domain.xml को छूने की आवश्यकता नहीं होती।

चरण 1: keystore का बैकअप लें

कुछ भी हटाने से पहले, वर्तमान keystore को कॉपी करें ताकि जरूरत पड़ने पर आप वापस लौट सकें। डोमेन की config डायरेक्टरी से:

cp keystore.jks keystore.jks.bak

चरण 2: डिफ़ॉल्ट s1as एंट्री हटाएं

keytool -delete -alias s1as -keystore keystore.jks

पूछे जाने पर keystore पासवर्ड दर्ज करें।

चरण 3: उसी alias के तहत एक नई प्राइवेट key बनाएं

s1as alias के तहत एक नई 2048-बिट RSA key जेनरेट करें और DN को इनलाइन दें ताकि कमांड नॉन-इंटरैक्टिव हो:

keytool -genkeypair 
  -alias s1as 
  -keyalg RSA -keysize 2048 
  -keystore keystore.jks 
  -dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Jose, ST=California, C=US" 
  -validity 825

फ्लैग्स का मतलब:

  • -alias s1as: डिफ़ॉल्ट GlassFish alias को दोबारा उपयोग करता है ताकि domain.xml में किसी बदलाव की आवश्यकता न हो।
  • -keyalg RSA -keysize 2048: एक 2048-बिट RSA key वर्तमान सार्वजनिक न्यूनतम है। नई keys के लिए जिन्हें आप कई वर्षों तक रखने की योजना बना रहे हैं, 3072 बिट एक उचित अपग्रेड है। अधिकांश सार्वजनिक CA छोटी, तेज़ key के लिए ECDSA (-keyalg EC -groupname secp256r1) भी स्वीकार करते हैं।
  • -keystore keystore.jks: डिफ़ॉल्ट GlassFish keystore। Eclipse GlassFish 7.1 और नए वर्जन पर keystore.p12 से बदलें। keytool मौजूदा keystore फॉर्मेट बनाए रखता है (पुराने इंस्टॉल्स पर JKS, 7.1+ पर PKCS12); दोनों यहां ठीक हैं।
  • -dname “CN=…”: CSR में लिखे गए Distinguished Name फील्ड्स। अपना सटीक, कानूनी कंपनी विवरण उपयोग करें:
  • CN: वह सटीक FQDN जिसे आप सुरक्षित कर रहे हैं, उदाहरण के लिए www.yourdomain.com, या एक वाइल्डकार्ड जैसे *.yourdomain.com। इंटरैक्टिव मोड में keytool के प्रॉम्प्ट शब्दों के बावजूद किसी व्यक्ति का नाम दर्ज न करें।
  • O: आपकी कंपनी का पूरा कानूनी नाम।
  • L: शहर का पूरा नाम (संक्षिप्त न करें)।
  • ST: राज्य या प्रांत का पूरा नाम (दो अक्षरों वाले कोड का उपयोग न करें)।
  • C: दो अक्षरों वाला ISO देश कोड, उदाहरण के लिए US, GB, DE
  • OU (Organizational Unit): यह फील्ड अब सार्वजनिक CA द्वारा जारी नहीं की जाती। इसे DN से बाहर रखें।

keytool keystore पासवर्ड और key पासवर्ड के लिए पूछता है। GlassFish डोमेन पर, keystore पासवर्ड, key पासवर्ड, और डोमेन मास्टर पासवर्ड सभी मेल खाने चाहिए, अन्यथा GlassFish स्टार्टअप पर key को अनलॉक नहीं कर पाएगा और HTTPS विफल हो जाएगा। keystore पासवर्ड को दोबारा उपयोग करने के लिए key-पासवर्ड प्रॉम्प्ट पर Enter दबाएं।

चरण 4: SAN के साथ CSR एक्सपोर्ट करें

विकल्प A जैसा ही कमांड, लेकिन आपकी नई key पर चलाएं:

keytool -certreq 
  -alias s1as 
  -keystore keystore.jks 
  -file glassfish.csr 
  -ext san=dns:yourdomain.com,dns:www.yourdomain.com

keystore पासवर्ड दर्ज करें। keytool CSR को वर्तमान डायरेक्टरी में glassfish.csr में लिखता है।

महत्वपूर्ण: alias को s1as ही रखें

GlassFish पर keytool की सबसे आम गलती यह है कि alias को किसी पड़ाव पर बदल दिया जाता है, चाहे key जेनरेट करते समय हो या साइन किए गए सर्टिफिकेट को इम्पोर्ट करते समय। दो विफलता स्थितियां सामने आती हैं:

  • key पर गलत alias। GlassFish का HTTPS listener domain.xml में s1as से जुड़ा होता है। यदि आप किसी दूसरे alias के तहत key जेनरेट करते हैं, तो GlassFish उसे ढूंढ नहीं पाएगा और listener डिफ़ॉल्ट self-signed सर्टिफिकेट पर वापस चला जाएगा (या शुरू ही नहीं होगा)। यदि आप वाकई एक अलग alias चाहते हैं, तो आपको domain.xml में हर s1as संदर्भ को मेल खाने के लिए अपडेट करना होगा।
  • इम्पोर्ट पर गलत alias। जब CA आपका साइन किया गया सर्टिफिकेट लौटाता है, तो आपको इसे उसी alias में वापस इम्पोर्ट करना होगा जिसमें प्राइवेट key है। एकदम नए alias के तहत इम्पोर्ट करने से सर्टिफिकेट बिना प्राइवेट key के एक अलग trusted एंट्री के रूप में संग्रहीत हो जाएगा, और TLS काम नहीं करेगा।

टर्मिनल बंद करने से पहले इन तीन मानों को नोट कर लें:

  • alias (डिफ़ॉल्ट s1as; इसे बनाए रखें)।
  • keystore फ़ाइल पथ, उदाहरण के लिए glassfish/domains/domain1/config/keystore.p12 (या पुराने बिल्ड्स पर keystore.jks)।
  • keystore पासवर्ड (जो डोमेन मास्टर पासवर्ड के बराबर होना चाहिए)।

सबमिट करने से पहले CSR को सत्यापित करें

CA द्वारा इनकी पुष्टि किए जाने से पहले DN में टाइपो या गायब SAN को पकड़ें। keytool के साथ CSR प्रिंट करें:

keytool -printcertreq -file glassfish.csr

या, यदि OpenSSL इंस्टॉल है, तो इसके बजाय इसका उपयोग करें:

openssl req -noout -text -in glassfish.csr

आउटपुट में तीन चीज़ों की पुष्टि करें: Subject आपका सटीक DN दिखाता है, Subject Alternative Name आपकी जरूरत के हर होस्टनेम को सूचीबद्ध करता है, और Public-Key साइज़ आपके अनुरोध से मेल खाता है (2048-बिट RSA, या जो भी आपने चुना)। आप उसी जांच के लिए हमारे CSR Decoder में CSR पेस्ट भी कर सकते हैं।

CSR को अपने Certificate Authority को सबमिट करें

किसी भी टेक्स्ट एडिटर में glassfish.csr खोलें। यह फ़ाइल प्लेन टेक्स्ट है, जो —–BEGIN CERTIFICATE REQUEST—– से शुरू होती है और —–END CERTIFICATE REQUEST—– पर समाप्त होती है। पूरा ब्लॉक कॉपी करें, जिसमें ये हेडर और फुटर लाइनें भी शामिल हों, और इसे अपने CA के साथ चेकआउट के दौरान CSR फील्ड में पेस्ट करें। Windows पर, पूरा टेक्स्ट लेने के लिए Ctrl + A फिर Ctrl + C का उपयोग करें; macOS पर, Cmd + A फिर Cmd + C का उपयोग करें।

CA द्वारा आपके अनुरोध को सत्यापित करने और सर्टिफिकेट जारी करने के बाद, GlassFish पर अपना SSL सर्टिफिकेट कैसे इंस्टॉल करें के साथ आगे बढ़ें। आप CA चेन को trusted के रूप में इम्पोर्ट करेंगे, फिर साइन किए गए सर्टिफिकेट को उसी keystore फ़ाइल (7.1+ पर keystore.p12, पुराने बिल्ड्स पर keystore.jks) में s1as alias में वापस इम्पोर्ट करेंगे, और अंत में HTTPS listener को उस alias पर पॉइंट करेंगे।

आज ऑर्डर करते समय एसएसएल प्रमाणपत्रों पर 10% की बचत करें!

तेजी से जारी करना, मजबूत एन्क्रिप्शन, 99.99% ब्राउज़र ट्रस्ट, समर्पित समर्थन और 25 दिन की मनी-बैक गारंटी। कूपन कोड: SAVE10

उड़ान में एक ड्रैगन की एक विस्तृत छवि
द्वारा लिखित

एसएसएल प्रमाणपत्रों में विशेषज्ञता वाला अनुभवी सामग्री लेखक। जटिल साइबर सुरक्षा विषयों को स्पष्ट, आकर्षक सामग्री में बदलना। प्रभावशाली आख्यानों के माध्यम से डिजिटल सुरक्षा को बेहतर बनाने में योगदान करें।