bg-tutorials

Tomcat में SSL सर्टिफिकेट कैसे इंस्टॉल करें

इस ट्यूटोरियल में, आप जावा keytool यूटिलिटी का उपयोग करके Apache Tomcat पर SSL सर्टिफिकेट इंस्टॉल करना कैसे करें सीखेंगे, फिर server.xml में HTTPS कनेक्टर को कॉन्फ़िगर करेंगे। यदि आपने अभी तक अपना CSR जेनरेट नहीं किया है, तो पहला सेक्शन आपको यह दिखाता है।

हमने पूरी प्रक्रिया को समझाने वाला एक वीडियो भी रिकॉर्ड किया है। आप वीडियो देख सकते हैं, निर्देश पढ़ सकते हैं, या दोनों कर सकते हैं। आप नीचे वीडियो देख सकते हैं।

Tomcat के लिए CSR कोड जेनरेट करें

CSR का अर्थ है Certificate Signing Request, जो आपके डोमेन और संगठन के बारे में वर्तमान विवरणों वाला एक टेक्स्ट ब्लॉक है। किसी कमर्शियल SSL सर्टिफिकेट के हर खरीदार को वैलिडेशन पास करने और सर्टिफिकेट प्राप्त करने के लिए Certificate Authority (SSL प्रदाता) को CSR सबमिट करना होता है। यदि CSR में गलत विवरण हैं, तो CA उस पर साइन नहीं करेगा।

Tomcat पर, CSR एक Java keystore से keytool के साथ बनाया जाता है, और वही keystore उस प्राइवेट की को रखता है जिसे आप इंस्टॉलेशन के दौरान फिर से उपयोग करेंगे। आपके पास दो विकल्प हैं:

महत्वपूर्ण: CSR जेनरेट करते समय आपने जिस keystore फ़ाइल और alias का उपयोग किया था, उसका ट्रैक रखें। आप बाद में अपना साइन किया हुआ सर्टिफिकेट उसी अलियास में वापस इम्पोर्ट करेंगे, क्योंकि वहीं मैचिंग प्राइवेट की मौजूद होती है।

Certificate Authority द्वारा आपके रिक्वेस्ट को वैलिडेट करने और आपको SSL फ़ाइलें भेजने के बाद, नीचे दिए गए इंस्टॉलेशन को जारी रखें।

Tomcat में SSL सर्टिफिकेट इंस्टॉल करें

Tomcat इंस्टॉलेशन के दो चरण होते हैं: पहले आप सर्टिफिकेट चेन और अपने साइन किए हुए सर्टिफिकेट को उस keystore में इम्पोर्ट करते हैं जिसमें पहले से आपकी प्राइवेट की मौजूद है, फिर आप उस keystore का उपयोग करने के लिए server.xml में HTTPS कनेक्टर को कॉन्फ़िगर करते हैं।

स्टेप 1: अपनी SSL सर्टिफिकेट फ़ाइलें तैयार करें

आपकी Certificate Authority आपके द्वारा दिए गए एड्रेस पर फ़ाइलें ईमेल करती है, जो आमतौर पर एक ZIP आर्काइव के रूप में होती हैं। इसे एक्सट्रैक्ट करें। CA के आधार पर, फ़ाइलें दो फॉर्मेट में से किसी एक में आती हैं:

  • PKCS#7: एक सिंगल .p7b (या .cer) फ़ाइल जिसमें पहले से ही आपके सर्टिफिकेट के साथ रूट और इंटरमीडिएट सर्टिफिकेट बंडल किए गए हैं।
  • PEM: अलग-अलग फ़ाइलें, आमतौर पर आपके सर्वर सर्टिफिकेट के लिए एक .crt फ़ाइल के साथ अलग root.crt और intermediate.crt फ़ाइलें।

एक्सट्रैक्ट की गई फ़ाइलों को सर्वर पर, उसी डायरेक्टरी में अपलोड करें जहां आपने अपना CSR जेनरेट करने के लिए उपयोग किया गया keystore है (नीचे इसे example.jks के रूप में संदर्भित किया गया है)। अपना फॉर्मेट पहचानें और उससे मैच करने वाले निर्देशों का पालन करें।

स्टेप 2: सर्टिफिकेट को अपने keystore में इम्पोर्ट करें

PKCS#7 फॉर्मेट। चूंकि .p7b में पहले से ही पूरी चेन शामिल होती है, एक ही कमांड आपकी मौजूदा प्राइवेट-की अलियास में एक साथ सब कुछ इम्पोर्ट कर देती है:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.p7b

ssldragon को अपने स्वयं के अलियास से और example को अपनी फ़ाइल नामों से बदलें। अलियास वही होना चाहिए जो पहले से आपकी प्राइवेट की रखता है (CSR स्टेप का अलियास)। जब आपको Certificate reply was installed in keystore संदेश दिखे, तो इम्पोर्ट सफल हो गया है। keystore की सामग्री को इसके साथ वेरिफाई करें:

keytool -list -v -keystore example.jks

ऐसी एंट्री देखें जिसका टाइप PrivateKeyEntry है और जिसकी सर्टिफिकेट चेन लंबाई 1 से अधिक है। यह पुष्टि करता है कि साइन किया हुआ सर्टिफिकेट अब आपकी प्राइवेट की से जुड़ा हुआ है।

PEM फॉर्मेट। सर्टिफिकेट्स को अलग-अलग, चेन ऑर्डर में इम्पोर्ट करें: पहले रूट, फिर कोई भी इंटरमीडिएट, और आपका डोमेन सर्टिफिकेट सबसे अंत में। पहले चेन इम्पोर्ट करने से keytool को आपकी की में रिप्लाई जोड़ने से पहले एक पूरा ट्रस्ट पाथ बनाने में मदद मिलती है। रूट सर्टिफिकेट इम्पोर्ट करें:

keytool -import -trustcacerts -alias root -keystore example.jks -file root.crt

फिर इंटरमीडिएट सर्टिफिकेट इम्पोर्ट करें:

keytool -import -trustcacerts -alias intermediate -keystore example.jks -file intermediate.crt

यदि आपका CA कई इंटरमीडिएट सर्टिफिकेट प्रदान करता है, तो हर एक को उसके अपने ट्रस्टेड अलियास के तहत इम्पोर्ट करें, उस क्रम का पालन करते हुए जिसमें वे एक-दूसरे पर साइन करते हैं (रूट से लेकर आपके डोमेन सर्टिफिकेट की ओर)। उदाहरण के लिए, एक Sectigo Sectigo PositiveSSL सर्टिफिकेट एक से अधिक इंटरमीडिएट के साथ आता है, इसलिए डोमेन सर्टिफिकेट से पहले उन्हें क्रम में इम्पोर्ट करें।

अंत में, अपना प्राइमरी सर्टिफिकेट (जो आपके डोमेन के लिए जारी किया गया है) मौजूदा प्राइवेट-की अलियास में इम्पोर्ट करें, वही अलियास जिसका उपयोग आपने CSR जेनरेट करते समय किया था:

keytool -import -trustcacerts -alias ssldragon -keystore example.jks -file example.crt

यहां, ssldragon आपका मौजूदा प्राइवेट-की अलियास होना चाहिए। क्योंकि उस अलियास में पहले से एक की है, keytool इस इम्पोर्ट को एक certificate reply के रूप में मानता है और साइन किए हुए सर्टिफिकेट को उस की से बांध देता है। यही वह स्टेप है जो HTTPS को काम करने योग्य बनाता है।

महत्वपूर्ण चूक: साइन किए हुए सर्टिफिकेट को एक बिल्कुल नए अलियास के तहत इम्पोर्ट करें। यदि अलियास में कोई मौजूदा प्राइवेट की नहीं है, तो keytool सर्टिफिकेट को बिना जुड़ी हुई की के एक स्टैंडअलोन ट्रस्टेड एंट्री के रूप में स्टोर करता है, और TLS फेल हो जाएगा। यदि आप अनिश्चित हैं कि कौन सा अलियास आपकी की रखता है, तो keytool -list -v -keystore example.jks चलाएँ और उस अलियास का उपयोग करें जिसका टाइप PrivateKeyEntry है।

स्टेप 3: server.xml में HTTPS कनेक्टर कॉन्फ़िगर करें

सर्टिफिकेट के आपके keystore में होने के साथ, Tomcat के HTTPS कनेक्टर को उसकी ओर इंगित करें। कनेक्टर server.xml में परिभाषित है, जो आपकी Tomcat इंस्टॉलेशन के conf फोल्डर में स्थित है (उदाहरण के लिए $CATALINA_HOME/conf/server.xml)। फ़ाइल को टेक्स्ट एडिटर में खोलें।

Tomcat के मौजूदा वर्ज़न (9, 10, और 11) पर, सुझाए गए फॉर्म में एक SSLHostConfig एलिमेंट नेस्ट किया जाता है, जिसमें बदले में एक Certificate एलिमेंट होता है जो आपके keystore को संदर्भित करता है। सिक्योर कनेक्टर को इस तरह जोड़ें या अपडेट करें:

<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    maxThreads="150"
    SSLEnabled="true"
    scheme="https"
    secure="true">
  <SSLHostConfig>
    <Certificate
        certificateKeystoreFile="/your_path/example.jks"
        certificateKeystorePassword="your_keystore_password"
        certificateKeystoreType="JKS"
        certificateKeyAlias="ssldragon"
        type="RSA" />
  </SSLHostConfig>
</Connector>
  • certificateKeystoreFile: आपकी keystore फ़ाइल का पूरा पथ।
  • certificateKeystorePassword: keystore पासवर्ड।
  • certificateKeystoreType: .jks keystore के लिए JKS, या .p12 / .pfx keystore के लिए PKCS12
  • certificateKeyAlias: वह अलियास जिसमें आपकी प्राइवेट की और साइन किया हुआ सर्टिफिकेट है (यहां, ssldragon)। यह Tomcat को बताता है कि जब keystore में एक से अधिक एंट्री हो, तो कौन सी एंट्री सर्व करना है।

ध्यान दें: ऊपर उपयोग किया गया पोर्ट 443 स्टैंडर्ड HTTPS पोर्ट है; Tomcat के अपने उदाहरणों में डिफ़ॉल्ट रूप से 8443 उपयोग होता है, इसलिए जो भी आपके एनवायरनमेंट को चाहिए, उसका उपयोग करें। यदि यह आपका पहला HTTPS सेटअप है, तो सिक्योर कनेक्टर server.xml में कमेंट किया हुआ हो सकता है। कनेक्टर को सक्रिय करने के लिए आस-पास के कमेंट मार्कर हटाएँ, और सुनिश्चित करें कि कोई अन्य कनेक्टर पहले से उस समान पोर्ट से जुड़ा हुआ न हो।

लीगेसी फॉर्म (पुराना Tomcat)। पुराने गाइड keystore विवरणों को सीधे कनेक्टर पर keystoreFile और keystorePass एट्रिब्यूट्स के रूप में रखते हैं। यह स्टाइल ऊपर दिखाए गए SSLHostConfig और Certificate एलिमेंट्स द्वारा प्रतिस्थापित कर दी गई है, जो समर्थित Tomcat रिलीज़ पर उपयोग करने वाला फॉर्म है।

स्टेप 4: server.xml सेव करें और Tomcat रीस्टार्ट करें

server.xml सेव करें, फिर Tomcat को रीस्टार्ट करें ताकि यह कॉन्फ़िगरेशन को फिर से लोड करे। Linux पर, बंडल की गई स्क्रिप्ट्स का उपयोग करें:

$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh

यदि Tomcat एक सर्विस के रूप में चलता है, तो इसके बजाय इसे अपने सर्विस मैनेजर के माध्यम से रीस्टार्ट करें (उदाहरण के लिए Linux पर systemctl restart tomcat, या Windows पर Services पैनल)। बधाई हो, आपका SSL सर्टिफिकेट अब आपके Tomcat सर्वर पर इंस्टॉल हो गया है।

अपनी Tomcat SSL इंस्टॉलेशन का परीक्षण करें

सर्टिफिकेट इंस्टॉल करने के बाद, छोटी-छोटी गलतियाँ बिना किसी सूचना के हो सकती हैं और यह प्रभावित कर सकती हैं कि ब्राउज़र आपकी साइट के साथ कैसे व्यवहार करते हैं। इंस्टॉलेशन की जाँच करने की आदत बनाएँ। हमारे SSL Checker को चलाएँ ताकि एक इंस्टेंट स्कैन मिल सके जो गायब इंटरमीडिएट सर्टिफिकेट या अनट्रस्टेड चेन जैसी समस्याओं को उजागर करता है।

अक्सर पूछे जाने वाले प्रश्न

इम्पोर्ट करने के बाद मेरा Tomcat SSL सर्टिफिकेट काम क्यों नहीं करता?

सामान्य कारण यह है कि साइन किए हुए सर्टिफिकेट को उस अलियास के तहत इम्पोर्ट कर दिया गया जो पहले से आपकी प्राइवेट की रखने वाले अलियास के बजाय एक नए अलियास के तहत है। फिर keytool इसे बिना की के एक ट्रस्टेड सर्टिफिकेट एंट्री के रूप में स्टोर करता है, जिससे Tomcat TLS हैंडशेक पूरा नहीं कर पाता। साइन किए हुए रिप्लाई को मौजूदा प्राइवेट-की अलियास (आपके CSR वाला अलियास) में फिर से इम्पोर्ट करें। keytool -list -v -keystore example.jks चलाकर पुष्टि करें और देखें कि अलियास PrivateKeyEntry के रूप में दिखता है और उसकी चेन एक से अधिक सर्टिफिकेट लंबी है।

क्या मुझे पहले सर्टिफिकेट चेन इम्पोर्ट करना चाहिए या अपना डोमेन सर्टिफिकेट?

पहले चेन इम्पोर्ट करें। रूट और किसी भी इंटरमीडिएट सर्टिफिकेट को क्रम में ट्रस्टेड एंट्री के रूप में जोड़ें, फिर अपने डोमेन सर्टिफिकेट को सबसे अंत में प्राइवेट-की अलियास में इम्पोर्ट करें। यह keytool को आपकी की में रिप्लाई जोड़ने से पहले एक पूरा ट्रस्ट पाथ बनाने देता है। PKCS#7 (.p7b) फ़ाइल के साथ चेन पहले से बंडल होती है, इसलिए एक ही इम्पोर्ट सब कुछ संभाल लेता है।

Tomcat SSL कॉन्फ़िगरेशन फ़ाइल कहाँ है?

HTTPS कनेक्टर server.xml में परिभाषित है, जो आपकी Tomcat इंस्टॉलेशन के conf डायरेक्टरी में है (उदाहरण के लिए $CATALINA_HOME/conf/server.xml)। Tomcat के मौजूदा वर्ज़न पर, keystore को कनेक्टर पर सीधे के बजाय एक नेस्टेड SSLHostConfig और Certificate एलिमेंट के माध्यम से संदर्भित किया जाता है।

क्या मैं Tomcat पर JKS के बजाय PKCS12 keystore का उपयोग कर सकता हूँ?

हाँ। Tomcat दोनों को सपोर्ट करता है। .p12 या .pfx keystore के लिए certificateKeystoreType को PKCS12 पर सेट करें, या .jks keystore के लिए JKS पर, और certificateKeystoreFile को मैचिंग फ़ाइल की ओर इंगित करें। PKCS12 स्टैंडर्ड, पोर्टेबल keystore फॉर्मेट है, इसलिए यह नए keystores के लिए एक अच्छा डिफ़ॉल्ट है।

Tomcat HTTPS के लिए किस पोर्ट का उपयोग करता है?

Tomcat का सैंपल कॉन्फ़िगरेशन सिक्योर कनेक्टर के लिए पोर्ट 8443 का उपयोग करता है। ब्राउज़र डिफ़ॉल्ट रूप से उपयोग किए जाने वाले स्टैंडर्ड पोर्ट पर HTTPS सर्व करने के लिए, कनेक्टर port को 443 पर सेट करें और सुनिश्चित करें कि कोई अन्य कनेक्टर या सर्विस पहले से इसका उपयोग नहीं कर रही है।

SSL कॉन्फ़िगरेशन बदलने के बाद मैं Tomcat को कैसे रीस्टार्ट करूँ?

बंडल की गई स्क्रिप्ट्स $CATALINA_HOME/bin/shutdown.sh उसके बाद $CATALINA_HOME/bin/startup.sh चलाएँ, या अपने सर्विस मैनेजर के माध्यम से Tomcat सर्विस को रीस्टार्ट करें (उदाहरण के लिए Linux पर systemctl restart tomcat, या Windows पर Services पैनल)। server.xml में बदलावों को प्रभावी होने के लिए रीस्टार्ट आवश्यक है।

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

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

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

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