Let's Encrypt नब्बे दिन के प्रमाणपत्र जारी करता है और उन्हें अपने-आप नवीनीकृत करता है, इसीलिए लोग सेट करने के एक हफ़्ते बाद उनके बारे में सोचना छोड़ देते हैं। दिक्कत यह है कि स्वचालित नवीनीकरण चुपचाप टूटता है: त्रुटियाँ कोई नहीं देखता, और तीन महीने बाद साइट आगंतुकों का स्वागत ब्राउज़र की चेतावनी से करती है। 2025 से Let's Encrypt ने समाप्ति की सूचना वाले ईमेल भेजना भी बंद कर दिया है, यानी आख़िरी बाहरी याददिहानी भी चली गई।

नीचे वे कारण हैं जिनसे नवीनीकरण काम करना बंद कर देता है, आवृत्ति के घटते क्रम में।

1. प्रमाणपत्र नवीनीकृत हुआ और सेवा ने उसे दोबारा पढ़ा ही नहीं

सबसे आम। certbot renew चला, नई फ़ाइल डिस्क पर है, और nginx या Apache पुरानी को मेमोरी में रखे हैं — और कॉन्फ़िगरेशन दोबारा लोड होने तक वही आगंतुकों को देते रहते हैं। औपचारिक रूप से सब ठीक है; असल में साइट पर मियाद ख़त्म प्रमाणपत्र है।

इलाज है वह hook जो सफल नवीनीकरण के बाद चलता है:

sudo certbot renew --deploy-hook "systemctl reload nginx"

यह एक बार नवीनीकरण फ़ाइल में लिखा जाता है (/etc/letsencrypt/renewal/example.com.conf, [renewalparams] खंड, renew_hook पंक्ति) और उसके बाद अपने-आप काम करता है।

2. वेब सर्वर बदला और challenge नहीं

HTTP-01 challenge के लिए /.well-known/acme-challenge/ से एक फ़ाइल सादे HTTP पर दी जानी चाहिए। यह आमतौर पर यूँ टूटता है:

  • कॉन्फ़िग में HTTP से HTTPS का बिना शर्त पुनर्निर्देश जोड़ा गया — challenge पुनर्निर्देश के पीछे जाकर असफल हो जाता है;
  • deny all वाला location ~ /\. नियम आ गया, जो बिंदु वाली हर डायरेक्टरी बंद कर देता है, .well-known समेत;
  • साइट की जड़ बदल गई और certbot की सेटिंग्स में पुराना --webroot-path रह गया;
  • देश के अनुसार अवरोधन या बुनियादी प्रमाणीकरण चालू किया गया और उसने सबके साथ सत्यापन सर्वर को भी पकड़ लिया।

कॉन्फ़िग में सही क्रम: पहले /.well-known/acme-challenge/ के लिए अलग location, और उसके बाद ही सामान्य पुनर्निर्देश।

3. टाइमर बंद है

नवीनीकरण systemd टाइमर या cron कार्य से चलता है, और दोनों में से कोई भी डिबग करते समय ग़लती से बंद हो सकता है या सर्वर बदलते समय खो सकता है।

systemctl list-timers | grep certbot
sudo certbot renew --dry-run

दूसरी कमांड आपका कोटा ख़र्च किए बिना परीक्षण मोड में पूरा नवीनीकरण चक्र चलाती है। यही एकमात्र जाँच है जो «क्या यह एक महीने बाद नवीनीकृत होगा» का जवाब पहले से देती है, बाद में नहीं।

4. कोई डोमेन अब यहाँ नहीं दिखाता

प्रमाणपत्र पाँच डोमेन ढँकता है, उनमें से एक दूसरे होस्ट पर चला गया, DNS बदल गया। उस डोमेन का सत्यापन पास होना बंद हो जाता है, और certbot पूरा प्रमाणपत्र नवीनीकृत नहीं करता — चार काम करते डोमेन समेत। अतिरिक्त डोमेन प्रमाणपत्र से हटाने पड़ते हैं, संदेश के साथ नज़रअंदाज़ नहीं किए जाते।

5. आप सीमाओं से टकरा गए

Let's Encrypt एक डोमेन के लिए हफ़्ते में प्रमाणपत्रों की संख्या सीमित करता है। यह आमतौर पर डिबग करते समय «काम नहीं किया, फिर से कोशिश करूँ» वाले चक्र का नतीजा होता है। प्रयोगों के लिए staging सर्वर है (--dry-run या --test-cert), और उसे सीमा ख़त्म होने से पहले इस्तेमाल करना चाहिए, बाद में नहीं।

जो दिया जा रहा है उसे जाँचें, जो रखा है उसे नहीं

डिस्क की फ़ाइलों पर आधारित हर जाँच में एक खोट है: फ़ाइल ताज़ा हो सकती है और आगंतुक को पुराना प्रमाणपत्र मिलता रहे। क्लाइंट की तरफ़ से देखें:

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -dates -subject -issuer

-servername विकल्प अनिवार्य है: उसके बिना कई साइटों वाले सर्वर पर आपको उस वर्चुअल होस्ट का प्रमाणपत्र मिलेगा जो पहले आता है, वह नहीं जो आपका मतलब था। आउटपुट में notAfter असली समाप्ति तिथि है।

इसी मौक़े पर शृंखला भी जाँच लें:

echo | openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null | grep -c 'BEGIN CERTIFICATE'

अगर सिर्फ़ एक प्रमाणपत्र है, तो मध्यवर्ती नहीं दिया जा रहा। ब्राउज़र आमतौर पर इस व्यवस्था को माफ़ कर देते हैं — वे शृंखला ख़ुद बना लेते हैं — पर curl, मोबाइल एप्लिकेशन और Java क्लाइंट सत्यापन में असफल होंगे। यह क्लासिक «मेरे यहाँ तो ठीक खुलता है और ग्राहक के यहाँ काम नहीं करता» है।

कितने दिन पहले चेतावनी

तीस दिन पहली चेतावनी के लिए समझदारी है: उतना ही समय तब बचता है जब certbot नवीनीकरण की कोशिशें शुरू करता है, यानी अगर तब तक कुछ नहीं हुआ, तो तंत्र टूटा हुआ है। चौदह दिन दूसरी चेतावनी है, जिस पर आज ही कार्रवाई चाहिए। सात दिन आपात स्थिति है।

मायने यह रखता है कि हर प्रमाणपत्र एक साथ देखा जाए, उन्हें भी जो Let's Encrypt से नहीं आए: साल भर के लिए ख़रीदे गए प्रमाणपत्र सबसे भरोसेमंद तरीक़े से भुलाए जाते हैं, क्योंकि साल भर में सब भूल जाते हैं कि वे हैं भी और सूचनाएँ किसके मेलबॉक्स में जाती हैं। डोमेन, तिथियाँ और बचे दिनों वाला एक पन्ना यह सवाल पूरी तरह बंद कर देता है — जैसा नीचे डेमो पर।