यह मॉड्यूल क्या करता है #
एक TLS प्रमाणपत्र ही वह चीज़ है जो http:// को https:// में बदलती है: यह आपके आगंतुकों और सर्वर के बीच के कनेक्शन को एन्क्रिप्ट करता है, और ब्राउज़र को «असुरक्षित साइट» की चेतावनी के बजाय ताला दिखाने पर मजबूर करता है।
tls मॉड्यूल certbot की मदद से उस प्रमाणपत्र के पूरे जीवनचक्र का ध्यान रखता है: यह Let's Encrypt (एक मुफ़्त और मान्यता प्राप्त प्राधिकरण) से इसे माँगता है, ACME चुनौती के माध्यम से सिद्ध करता है कि डोमेन आपका है, प्रमाणपत्र को वहाँ स्थापित करता है जहाँ आपका वेब सर्वर उसकी अपेक्षा करता है और समाप्त होने से पहले इसे स्वचालित रूप से नवीनीकृत करता है — बिना आपके याद रखे।
आपका डोमेन (उदा. app.ejemplo.com) DNS द्वारा इस सर्वर के IP की ओर इंगित करना चाहिए, और HTTP-01 चुनौती के लिए पोर्ट 80 सुलभ होना चाहिए। अन्यथा, जारी करना सत्यापन चरण में विफल हो जाएगा।
सामान्य कार्य #
चुनें कि आप क्या करना चाहते हैं। हर विधि में कमांड पहले से लिखा हुआ आता है — बस डोमेन और अपना ईमेल अपने वाले से बदलें, और कॉपी करें दबाएँ।
1
मेरा पहला प्रमाणपत्र जारी करें
अपने डोमेन के लिए HTTPS का ताला एक मिनट में पाएँ।
ubuntu उपयोगकर्ता के साथ SSH के ज़रिए अपने सर्वर से जुड़ें।
डोमेन और ईमेल को अपने वाले से बदलकर कमांड चलाएँ (ईमेल का उपयोग केवल तब आपको सूचित करने के लिए होता है जब कुछ समाप्त होने वाला हो):
$ sudo imaxe tls issue app.ejemplo.com --email [email protected]कुछ सेकंड प्रतीक्षा करें। आप चुनौती की प्रगति देखेंगे और अंत में, समाप्ति की तारीख।
https:// से लोड होती है। स्वचालित नवीनीकरण सक्रिय हो गया है — आपको और कुछ नहीं करना है।2
देखें कि कौन-से हैं और कब समाप्त होते हैं
एक नज़र में अपने प्रमाणपत्रों की स्थिति जाँचें।
सामान्य स्थिति और नवीनीकरण timer का त्वरित सारांश:
$ sudo imaxe tls statusक्या आप शेष दिनों और fullchain के पथ के साथ, डोमेन-दर-डोमेन विवरण चाहते हैं? list का उपयोग करें:
$ sudo imaxe tls list3
नवीनीकरण को बाध्य करें
सामान्यतः यह स्वचालित है, लेकिन ज़रूरत पड़ने पर आप इसे पहले कर सकते हैं।
समाप्ति के निकट सभी प्रमाणपत्रों को नवीनीकृत करें (यह ठीक वही है जो timer करता है):
$ sudo imaxe tls renewक्या आप पहले डिस्क को छुए बिना इसका पूर्वाभ्यास करना चाहते हैं, या दिन बचे होने पर भी नवीनीकृत करना चाहते हैं? --dry-run या --force जोड़ें:
$ sudo imaxe tls renew --dry-run
$ sudo imaxe tls renew --force4
एक प्रमाणपत्र रद्द करें
प्राधिकरण में एक प्रमाणपत्र को अमान्य करें (उदा. यदि कुंजी लीक हो गई हो)।
Let's Encrypt में किसी डोमेन का प्रमाणपत्र रद्द करें, यदि आप जानते हों तो कारण बताते हुए:
$ sudo imaxe tls revoke app.ejemplo.com --reason keycompromiseissue के साथ एक नया जारी करें।5
डिस्क से एक प्रमाणपत्र मिटाएँ
ऐसे डोमेन का प्रबंधन बंद करें जिसे आप अब उपयोग नहीं करते।
प्रमाणपत्र और उसकी कुंजियों को डिस्क से हटाएँ। सावधान: यह इसे प्राधिकरण में रद्द नहीं करता — उसके लिए पहले revoke का उपयोग करें।
$ sudo imaxe tls delete tienda.ejemplo.comimaxe tls list से गायब हो जाता है और उसका स्वचालित नवीनीकरण रुक जाता है।सबसे आम त्रुटि यह है कि DNS अभी तक प्रसारित नहीं हुआ है या पोर्ट 80 बंद है। कुछ मिनट प्रतीक्षा करें और पुनः प्रयास करें। यदि समस्या बनी रहे, तो प्रयासों का कोटा न खर्च करने के लिए पहले --staging के साथ परीक्षण मोड में आज़माएँ (देखें संदर्भ)।
सारांश #
imaxe tls <subcomando> [<dominio>...] [--email CORREO] [flags]प्रमाणपत्रों को छूने वाले उपकमांडों को root विशेषाधिकार चाहिए (sudo का उपयोग करें) क्योंकि वे /etc/imaxe/ में लिखते हैं और सिस्टम सेवाओं को पुनः लोड करते हैं। मशीन द्वारा पठनीय, scripting के लिए उपयुक्त आउटपुट पाने के लिए list या status में --json जोड़ें।
उपकमांड #
| उपकमांड | यह क्या करता है | प्रासंगिक flags |
|---|---|---|
| issue | ACME चुनौती हल करते हुए, एक या अधिक डोमेन के लिए प्रमाणपत्र जारी करता है। | --email, --webroot, --standalone, --staging |
| renew | समाप्ति के निकट प्रमाणपत्रों को नवीनीकृत करता है और वेब सर्वर को पुनः लोड करता है। timer के लिए उपयुक्त। | --dry-run, --force |
| list | प्रबंधित प्रमाणपत्रों को समाप्ति के दिनों और fullchain के पथ के साथ सूचीबद्ध करता है। | --json |
| status | सारांश: प्रमाणपत्रों की संख्या, समाप्ति के निकट वाले और नवीनीकरण timer की स्थिति। | --json |
| revoke | प्राधिकरण (ACME) में डोमेन के अनुसार एक प्रमाणपत्र रद्द करता है। | --reason |
| delete | प्रमाणपत्र और उसकी कुंजियों को डिस्क से मिटाता है। ACME में रद्द नहीं करता। | — |
आर्गुमेंट और flags #
| Flag | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| <dominio> req. | string… | — | प्रमाणपत्र के लिए एक या अधिक डोमेन। issue में पहला मुख्य होता है (CN); बाकी SAN। revoke/delete में, संचालित करने वाला डोमेन। |
| string | tls.yml | ACME खाते का संपर्क ईमेल। पहले issue में अनिवार्य; उसके बाद tls.yml वाला पुनः उपयोग होता है। | |
| --webroot | path | /var/www/html | HTTP-01 चुनौती के लिए मूल निर्देशिका। डिफ़ॉल्ट विधि। |
| --standalone | bool | false | webroot के बजाय certbot के अंतर्निहित सर्वर का उपयोग करता है। पोर्ट 80 खाली होना आवश्यक। |
| --staging | bool | false | Let's Encrypt के परीक्षण परिवेश का उपयोग करता है (दर सीमा में नहीं गिना जाता)। प्रमाणपत्र विश्वसनीय नहीं होगा। |
| --dry-run | bool | false | renew में, डिस्क को छुए बिना नवीनीकरण का अनुकरण करता है। |
| --force | bool | false | renew में, समाप्ति के निकट न होने पर भी नवीनीकृत करता है। |
| --reason | enum | unspecified | revoke में: unspecified, keycompromise, superseded, cessationofoperation। |
| --json | bool | false | list/status में, परिणाम को stdout पर JSON के रूप में देता है। |
फाइलें और पथ #
| पथ | सामग्री |
|---|---|
| /etc/imaxe/tls.yml | मॉड्यूल कॉन्फ़िगरेशन: डिफ़ॉल्ट ईमेल, विधि (webroot/standalone), webroot, staging, स्वतः-नवीनीकरण और पुनः लोड hook। |
| /etc/letsencrypt/live/<dominio>/ | certbot द्वारा प्रबंधित प्रमाणपत्र (fullchain.pem) और निजी कुंजी (privkey.pem)। |
| /var/log/imaxe/tls.log | प्रत्येक जारी करने, नवीनीकरण और रद्दीकरण का संरचित रिकॉर्ड। |
| imaxe-tls.timer | systemd टाइमर जो समय-समय पर renew को चलाता है। |
tls.yml का उदाहरण:
email: [email protected]
default_method: webroot
webroot: /var/www/html
staging: false
auto_renew: true
reload_hook: systemctl reload nginxनिकास कोड और लॉग #
प्रत्येक निष्पादन एक कोड लौटाता है जिसे आप echo $? से जाँच सकते हैं — स्क्रिप्ट में जोड़ने के लिए उपयोगी:
डिबग करते समय लॉग को लाइव देखें:
$ sudo journalctl -u imaxe-tls -f
$ sudo tail -f /var/log/imaxe/tls.logउन्नत उदाहरण #
एक ही प्रमाणपत्र में कई डोमेन
पहला डोमेन मुख्य होता है; बाकी SAN के रूप में जोड़े जाते हैं, सभी एक ही प्रमाणपत्र में:
$ sudo imaxe tls issue ejemplo.com www.ejemplo.com \
--email [email protected]उत्पादन से पहले सुरक्षित परीक्षण
वास्तविक कोटा खर्च न करने के लिए पूरी श्रृंखला को परीक्षण परिवेश के विरुद्ध सत्यापित करें। --standalone के साथ आपको एक कॉन्फ़िगर किए गए वेब सर्वर की आवश्यकता नहीं है:
$ sudo imaxe tls issue app.ejemplo.com \
--email [email protected] --standalone --staging \
|| echo "falló con código $?"समस्या निवारण #
| लक्षण | संभावित कारण | समाधान |
|---|---|---|
| CHALLENGE निकलता है (कोड 3) | डोमेन इस होस्ट पर हल नहीं होता या पोर्ट 80 बंद है। | A/AAAA रिकॉर्ड सत्यापित करें और security group में 80 खोलें; पुनः प्रयास करें। |
| RATELIMIT निकलता है (कोड 4) | एक सप्ताह में एक ही डोमेन के बहुत सारे जारी करने। | परीक्षण के लिए --staging का उपयोग करें; विंडो के मुक्त होने की प्रतीक्षा करें। |
| HTTPS लोड होता है पर चेतावनी के साथ | --staging में जारी: प्रमाणपत्र विश्वसनीय नहीं है। | एक वैध प्रमाणपत्र पाने के लिए --staging के बिना पुनः जारी करें। |
| RELOAD निकलता है (कोड 5) | reload_hook एक अस्तित्वहीन सेवा की ओर इंगित करता है। | tls.yml में reload_hook समायोजित करें और renew फिर से चलाएँ। |
TLS मॉड्यूल में अटक गए?
हमें «imaxe <module> status --json» का आउटपुट भेजें और हम आपको जल्दी जवाब देंगे।