यह गाइड आपको दिखाती है कि Pound पर SSL/TLS सर्टिफिकेट कैसे इंस्टॉल करें, जो एक लाइटवेट HTTP/HTTPS रिवर्स प्रॉक्सी है। इसमें उस हिस्से को कवर किया गया है जो अधिकतर ऑपरेटरों को उलझा देता है: सही क्रम में एक सिंगल कॉम्बाइंड PEM फाइल बनाना जिसकी Pound को अपेक्षा होती है, फिर एक ऐसा ListenHTTPS ब्लॉक लिखना जो पुराने प्रोटोकॉल को डिसेबल करे, Pound को एक बैकएंड की ओर इशारा करे, और सर्विस को रीस्टार्ट करने से पहले कॉन्फिगरेशन चेक में टिका रहे।
इस बारे में एक त्वरित नोट कि यह गाइड किस Pound को टारगेट करती है। मूल Apsis Pound प्रोजेक्ट को सितंबर 2022 में बंद कर दिया गया था। सक्रिय विकास Sergey Poznyakoff द्वारा मेंटेन किए जा रहे फोर्क में github.com/graygnuorg/pound पर चला गया, जो अब कैननिकल अपस्ट्रीम है और वर्तमान Linux डिस्ट्रीब्यूशन्स द्वारा पैकेज किया जाने वाला वर्शन है। नीचे दिए गए डायरेक्टिव्स आधुनिक 4.x सीरीज़ से मेल खाते हैं।
Pound के लिए CSR जनरेट करें
यदि आपने पहले ही अपना CSR जनरेट कर लिया है और जारी किए गए सर्टिफिकेट फाइलें आपके पास हैं, तो सीधे Pound पर SSL सर्टिफिकेट इंस्टॉल करें पर जाएं।
इससे पहले कि कोई सर्टिफिकेट अथॉरिटी आपका सर्टिफिकेट जारी कर सके, आपको एक CSR (Certificate Signing Request) सबमिट करना होगा: एक छोटा टेक्स्ट ब्लॉक जिसमें आपके डोमेन का विवरण और एक पब्लिक कुंजी होती है, जो एक प्राइवेट कुंजी के साथ जोड़ी जाती है जो सर्वर पर रहती है। आपके पास दो विकल्प हैं:
- हमारे CSR Generator के साथ CSR को स्वचालित रूप से जनरेट करें। यह टूल CSR और मिलती-जुलती प्राइवेट कुंजी दोनों लौटाता है, जिन्हें आप फिर सर्वर पर ले जाते हैं।
- हमारे ट्यूटोरियल Pound पर CSR कैसे जनरेट करें का पालन करके सर्वर पर ही OpenSSL के साथ CSR जनरेट करें। प्राइवेट कुंजी सर्वर पर ही रहती है।
सर्टिफिकेट के लिए आवेदन करते समय, पूरा CSR ब्लॉक पेस्ट करें, जिसमें —–BEGIN CERTIFICATE REQUEST—– और —–END CERTIFICATE REQUEST—– लाइनें शामिल हैं। यदि आप सबमिट करने से पहले CSR की सामग्री की पुष्टि करना चाहते हैं, तो इसे हमारे CSR डिकोडर में पेस्ट करें। मिलती-जुलती प्राइवेट कुंजी फाइल (आमतौर पर yourdomain.key) को किसी सुरक्षित जगह पर रखें जिसे केवल रूट पढ़ सके; इंस्टॉलेशन के दौरान आपको इसकी आवश्यकता होगी।
Pound पर SSL सर्टिफिकेट इंस्टॉल करें
एक बार CA द्वारा सर्टिफिकेट जारी कर दिए जाने के बाद, आपको आमतौर पर ये प्राप्त होंगे:
- आपका प्राइमरी (सर्वर) सर्टिफिकेट, जो आमतौर पर आपके डोमेन के नाम पर एक .crt या .pem फाइल होती है।
- एक या अधिक इंटरमीडिएट सर्टिफिकेट, जो अलग फाइलों के रूप में या एक .ca-bundle फाइल में बंडल किए गए हो सकते हैं।
- प्राइवेट कुंजी (एक .key फाइल) जो आपके CSR के साथ जनरेट की गई थी।
Pound को एक सिंगल PEM फाइल की अपेक्षा होती है जिसमें सर्टिफिकेट, इंटरमीडिएट चेन, और अनएन्क्रिप्टेड प्राइवेट कुंजी शामिल हो। graygnuorg मैनुअल क्रम के बारे में स्पष्ट है: सर्टिफिकेट, फिर इंटरमीडिएट सर्टिफिकेट (यदि कोई हो), फिर प्राइवेट कुंजी, इस क्रम में। चेन को छोड़ना सबसे सामान्य इंस्टॉलेशन गलती है: सर्टिफिकेट डेस्कटॉप ब्राउज़र में ठीक दिखता है लेकिन Android पर, iOS पर, और कमांड-लाइन क्लाइंट्स में फेल हो जाता है।
स्टेप 1: कॉम्बाइंड PEM फाइल बनाएं
यह गाइड मानती है कि सर्टिफिकेट फाइलें /etc/pound/ में स्टेज की गई हैं। अपने लेआउट के अनुसार पथों को समायोजित करें। तीन फाइलों को एक PEM फाइल में जोड़ें (concatenate)। नीचे दिया गया pipe-to-tee पैटर्न रीडायरेक्ट को रूट प्रिविलेज के साथ चलाता है, जो आवश्यक है क्योंकि /etc/pound/ आमतौर पर केवल रूट द्वारा ही लिखने योग्य होता है (एक सादा sudo cat … > /etc/pound/… फेल हो जाएगा, क्योंकि शेल आउटपुट फाइल को sudo चलने से पहले ही आपके सामान्य यूज़र के रूप में खोल देता है):
cat your_domain.crt intermediate.crt your_domain.key | sudo tee /etc/pound/your_domain.pem > /dev/null
यदि CA ने इंटरमीडिएट्स को एक सिंगल .ca-bundle फाइल के रूप में भेजा है, तो इसके बजाय इसका उपयोग करें:
cat your_domain.crt your_domain.ca-bundle your_domain.key | sudo tee /etc/pound/your_domain.pem > /dev/null
फाइल के नामों को अपने स्वयं के नामों से बदलें। कॉम्बाइंड फाइल के भीतर प्राइवेट कुंजी अनएन्क्रिप्टेड होनी चाहिए, क्योंकि Pound नॉन-इंटरैक्टिव रूप से शुरू होता है और पासफ़्रेज़ के लिए प्रॉम्प्ट नहीं कर सकता। परिणामी फाइल को इस तरह लॉक करें कि केवल रूट इसे पढ़ सके:
sudo chown root:root /etc/pound/your_domain.pem
sudo chmod 600 /etc/pound/your_domain.pem
स्टेप 2: pound.cfg संपादित करें
Pound कॉन्फिगरेशन फाइल खोलें (सामान्यतः Debian और Ubuntu पर /etc/pound/pound.cfg, या कुछ अन्य डिस्ट्रीब्यूशन्स पर /etc/pound.cfg) और एक ListenHTTPS ब्लॉक जोड़ें जो कॉम्बाइंड PEM फाइल की ओर इशारा करे। एक न्यूनतम आधुनिक ब्लॉक इस तरह दिखता है:
ListenHTTPS
Address 0.0.0.0
Port 443
Cert "/etc/pound/your_domain.pem"
# Modern TLS only: disables SSLv2, SSLv3, TLSv1.0 and TLSv1.1,
# leaving TLSv1.2 and TLSv1.3 enabled.
Disable TLSv1_1
Ciphers "ECDHE+AESGCM:ECDHE+CHACHA20:!aNULL:!MD5:!DSS"
Service
Backend
Address 127.0.0.1
Port 8080
End
End
End
ऊपर दिए गए डायरेक्टिव्स पर कुछ नोट्स:
- Cert उस कॉम्बाइंड PEM फाइल को उपलब्ध कराता है जो आपने स्टेप 1 में बनाई थी। मैनुअल स्पष्ट है कि Cert को लिसनर के भीतर अन्य सभी SSL-विशिष्ट डायरेक्टिव्स से पहले आना चाहिए, इसलिए इसे ब्लॉक के सबसे ऊपर रखें।
- Disable नामित प्रोटोकॉल और उससे पुराने हर प्रोटोकॉल को बंद कर देता है। इसलिए Disable TLSv1_1, SSLv2, SSLv3, TLSv1.0 और TLSv1.1 को डिसेबल करता है, जिससे TLSv1.2 और TLSv1.3 सक्रिय रहते हैं, जो वर्तमान उद्योग मार्गदर्शन के अनुरूप है।
- Ciphers OpenSSL सिफर सूची सेट करता है (जिसका उपयोग TLS 1.2 के लिए होता है; TLS 1.3 अपनी स्वयं की सिफरसूट्स नेगोशिएट करता है)। ऊपर दी गई सूची प्रॉक्सी को आधुनिक ECDHE सुइट्स तक AEAD के साथ सीमित करती है; यदि आपको पुराने क्लाइंट्स को सपोर्ट करने की आवश्यकता है, तो ssl-config.mozilla.org से Mozilla का “intermediate” प्रोफाइल इस्तेमाल करें।
- Service / Backend वह जगह है जहाँ Pound डिक्रिप्टेड ट्रैफिक को प्रॉक्सी करता है। उदाहरण लूपबैक इंटरफेस पर एक सिंगल बैकएंड (पोर्ट 8080) को फॉरवर्ड करता है; एड्रेस और पोर्ट को अपने एप्लिकेशन के अनुरूप बदलें, और यदि आप चाहते हैं कि Pound लोड-बैलेंस करे तो और Backend ब्लॉक जोड़ें।
यदि आप यह भी चाहते हैं कि Pound सादा HTTP स्वीकार करे और उसे फॉरवर्ड करे (आमतौर पर केवल HTTPS पर रीडायरेक्ट करने के लिए, स्टेप 4 देखें), तो एक अलग ListenHTTP ब्लॉक उसी फाइल में जोड़ें।
स्टेप 3: कॉन्फिगरेशन जांचें और Pound रीस्टार्ट करें
सर्विस को रीलोड करने से पहले, कॉन्फिगरेशन फाइल को वैलिडेट करें ताकि कोई टाइपो प्रॉक्सी को ऑफलाइन न कर सके। Pound में एक बिल्ट-इन चेक मोड है:
sudo pound -c -f /etc/pound/pound.cfg
यह सफल होने पर स्टेटस 0 के साथ बाहर निकलता है और कुछ भी प्रिंट नहीं करता, या फेल होने पर फाइल-और-लाइन एरर मैसेज के साथ स्टेटस 1 देता है। यदि आप एक स्पष्ट “configuration OK” पुष्टि चाहते हैं तो -v जोड़ें। जब चेक पास हो जाए, तो Pound को रीस्टार्ट करें ताकि यह नया लिसनर उठा ले:
sudo systemctl restart pound
बिना systemd वाले सिस्टम्स पर, इसके बजाय पुराने init स्क्रिप्ट का उपयोग करें:
sudo /etc/init.d/pound restart
पुष्टि करें कि सर्विस चल रही है और पोर्ट 443 पर सुन रही है:
sudo systemctl status pound
sudo ss -tlnp | grep ':443'
स्टेप 4 (अनुशंसित): HTTP को HTTPS पर रीडायरेक्ट करें
यह सुनिश्चित करने के लिए कि जो विज़िटर सादा डोमेन टाइप करते हैं वे सुरक्षित URL पर पहुँचें, एक सादा HTTP लिसनर जोड़ें जो हर रिक्वेस्ट का जवाब उसी पथ के HTTPS वर्शन पर एक स्थायी रीडायरेक्ट के साथ दे:
ListenHTTP
Address 0.0.0.0
Port 80
Service
Redirect 301 "https://example.com$1"
End
End
example.com को अपने डोमेन से बदलें। $1 बैक-रेफरेंस मूल रिक्वेस्ट पथ को संरक्षित रखता है। sudo pound -c -f /etc/pound/pound.cfg फिर से चलाएं, फिर सर्विस को रीस्टार्ट करें।
SSL इंस्टॉलेशन का परीक्षण करें
अपनी साइट को ब्राउज़र में https:// पर खोलें और जांचें कि पैडलॉक बंद है और सर्टिफिकेट आपके डोमेन से मेल खाता है। फिर सर्टिफिकेट, चेन, और Pound द्वारा दी जा रही प्रोटोकॉल्स व सिफर्स की तुरंत रिपोर्ट के लिए हमारे SSL Checker से गहरा स्कैन चलाएं। वहाँ का साफ परिणाम यह दर्शाता है कि मोबाइल और API क्लाइंट्स सहित हर प्रमुख प्लेटफॉर्म पर क्लाइंट्स सर्टिफिकेट पर भरोसा करेंगे।
अक्सर पूछे जाने वाले सवाल
मूल Apsis प्रोजेक्ट को 2022 में छोड़ दिया गया था। सक्रिय रूप से मेंटेन किया जा रहा फोर्क Sergey Poznyakoff द्वारा graygnuorg/pound है, जो वर्तमान में 4.x सीरीज़ में है, और यही वह है जिसे प्रमुख Linux डिस्ट्रीब्यूशन्स pound के रूप में पैकेज करते हैं। यदि आप पुरानी 2.x लाइन से कुछ भी चला रहे हैं, तो एक वर्तमान रिलीज़ पर जाने की योजना बनाएं: इस गाइड में कॉन्फिगरेशन डायरेक्टिव्स आधुनिक फोर्क को मानकर बनाई गई हैं।
Pound मैनुअल के अनुसार: पहले सर्वर सर्टिफिकेट, फिर इंटरमीडिएट सर्टिफिकेट (यदि कोई हो), फिर प्राइवेट कुंजी, सभी PEM-एन्कोडेड, उस एक ही फाइल में। प्राइवेट कुंजी पासफ़्रेज़-प्रोटेक्टेड नहीं होनी चाहिए, क्योंकि Pound एक डीमन के रूप में शुरू होता है और उसके लिए प्रॉम्प्ट करने का कोई तरीका नहीं है।
ListenHTTPS ब्लॉक के भीतर Disable डायरेक्टिव का उपयोग करें। Pound का Disable नामित प्रोटोकॉल और उससे पुराने हर प्रोटोकॉल को बंद कर देता है, इसलिए Disable TLSv1_1, SSLv2, SSLv3, TLSv1.0 और TLSv1.1 को डिसेबल करता है, केवल TLSv1.2 और TLSv1.3 को छोड़कर। नई डिप्लॉयमेंट्स के लिए यही अनुशंसित सेटिंग है।
हां। Pound SNI को सपोर्ट करता है, इसलिए आप एक ही ListenHTTPS लिसनर के भीतर कई Cert स्टेटमेंट डिक्लेयर कर सकते हैं (या Cert को PEM फाइलों की एक डायरेक्टरी की ओर इशारा कर सकते हैं)। Pound सर्टिफिकेट्स को क्रम में चलता है और वह पहला सर्टिफिकेट देता है जिसका Common Name या SAN रिक्वेस्ट किए गए होस्ट नाम से मेल खाता है, इसलिए वाइल्डकार्ड्स से पहले अधिक विशिष्ट सर्टिफिकेट्स (होस्ट नामों) की सूची बनाएं।
sudo pound -c -f /etc/pound/pound.cfg चलाएं। -c फ्लैग कॉन्फिगरेशन फाइल में सिंटैक्स एरर्स की जांच करता है और प्रॉक्सी को शुरू किए बिना बाहर निकल जाता है; एग्ज़िट स्टेटस 0 का मतलब है ठीक है, स्टेटस 1 का मतलब है कि कोई एरर है (मैसेज बताता है कि किस फाइल और किस लाइन में)। स्पष्ट सफलता संदेश के लिए -v जोड़ें।
15 मार्च, 2026 से, सार्वजनिक रूप से भरोसेमंद SSL/TLS सर्टिफिकेट्स की सीमा 200 दिनों की है, और CA/Browser Forum ने और कमी की योजना बनाई है (2027 में 100 दिन और 2029 में 47 दिन तक)। हर एक्सपायरी से काफी पहले ऊपर दिए गए इंस्टॉल को दोहराने की योजना बनाएं, या ACME के साथ रिन्यूअल्स को ऑटोमेट करें।
आज ऑर्डर करते समय एसएसएल प्रमाणपत्रों पर 10% की बचत करें!
तेजी से जारी करना, मजबूत एन्क्रिप्शन, 99.99% ब्राउज़र ट्रस्ट, समर्पित समर्थन और 25 दिन की मनी-बैक गारंटी। कूपन कोड: SAVE10


