Lego selfdns प्रदाता को बनाने की कोशिश की
सर्वर
Lastmod: 2023-02-17
Published: 2023-02-16

Lego का उपयोग करके, Let’s Encrypt के SSL प्रमाण पत्र को प्राप्त करने के दौरान, lego कमांड स्वयं एक DNS सर्वर के रूप में कार्य करता है और DNS-01 प्रमाणीकरण के लिए एक प्रदाता बनाने की कोशिश की गई।

शुरुआत

Lego एक ACME क्लाइंट है जिसे Go में लिखा गया है, जो Let’s Encrypt जैसे SSL प्रमाण पत्र प्राप्त करने के लिए एक कमांड लाइन टूल है।

आपने क्या किया?

Lego का DNS-01 प्रमाणीकरण विभिन्न DNS प्रदाताओं के साथ संगत है, लेकिन “API का उपयोग करने वाला DNS सर्वर नहीं है!” ऐसी स्थिति में, मैंने एक selfdns प्रदाता बनाया जो DNS के रूप में काम करके DNS-01 प्रमाणीकरण के साथ SSL प्रमाण पत्र जारी करता है।

मुझे लगता है कि Lego को स्वयं एक सर्वर के रूप में चलाने की अपेक्षा नहीं की गई है, इसलिए मैंने Pull अनुरोध नहीं किया और इसे व्यक्तिगत Fork के रूप में परीक्षण कोड लिखे बिना बना दिया।

इससे, API का उपयोग नहीं करने वाली DNS सेवाओं (डोमेन से जुड़ी DNS) के लिए, NS रिकॉर्ड को इंगित करके DNS-01 प्रमाणीकरण के माध्यम से SSL प्रमाण पत्र प्राप्त किया जा सकता है।

Lego को DNS सर्वर के रूप में चलाने के लिए, बाहरी से DNS सर्वर के रूप में पहुंचने योग्य बनाना आवश्यक है।

अस्वीकरण

यह यहां है, लेकिन यह केवल व्यक्तिगत उपयोग के लिए बनाया गया है इसलिए कोई संचालन की गारंटी नहीं है।
साथ ही, मैंने ACME के विनिर्देश की जांच नहीं की है, यह केवल काम करना अच्छा है के विचार से बनाया गया है।

उपयोग करने का तरीका

जारी करने के लिए DNS पर NS रिकॉर्ड को इंगित करें

  • एक VPS सर्वर (होगे) पर प्रमाण पत्र जारी करना है, इसलिए हम होगे सर्वर के DNS में NS रिकॉर्ड को इंगित करते हैं।

    hoge            60  IN A  XXX.XXX.XXX.XXX
    _acme-challenge 60  IN NS hoge.example.jp.
    
  • सुनिश्चित करने के लिए कि अपेक्षित परिणाम प्राप्त हो रहा है, हम dig कमांड के साथ जांचते हैं।

    $ dig _acme-challenge.example.jp -t ns
    ;; AUTHORITY SECTION:
    _acme-challenge.example.jp. 60 IN  NS      hoge.example.jp.
    
    ;; ADDITIONAL SECTION:
    hoge.example.jp.   60      IN      A       XXX.XXX.XXX.XXX
    

lego को चलाने के लिए वैश्विक IP का सर्वर तैयार करें

  • iptables का पोर्ट खोलें। DNS सर्वर के रूप में कार्य करने के लिए, हमें UDP/TCP के 53 नंबर पोर्ट को खोलने की आवश्यकता है।

    # iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
    # iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
    
  • संशोधित Lego डाउनलोड करें।

    # wget https://github.com/masa23/lego/releases/download/v4.10.0/lego_v4.10.0-1_linux_amd64.tar.gz
    # tar zxvf lego_v4.10.0_linux_amd64.tar.gz
    
  • lego को चलाकर प्रमाण पत्र जारी करें।
    DNS सर्वर के रूप में कार्य करने के लिए, --dns selfdns निर्दिष्ट करें।
    53 नंबर पोर्ट का उपयोग करने के लिए, रूट अनुमति आवश्यक है।

    # SELFDNS_LISTEN_ADDRESS=XXX.XXX.XXX.XXX SELFDNS_SERVER_HOSTNAME=hoge.example.jp ./lego --email <ईमेल पता> --domains="*.example.jp" --accept-tos --dns=selfdns run 
    

    SELFDNS_LISTEN_ADDRESS में, lego को चलाने वाले सर्वर का वैश्विक IP निर्दिष्ट करें। SELFDNS_SERVER_HOSTNAME में, lego को चलाने वाले सर्वर का होस्ट नाम निर्दिष्ट करें।
    यह प्रतिक्रिया के समय SOA रिकॉर्ड में उपयोग किया जाएगा।

अगर कोई समस्या नहीं है, तो प्रमाण पत्र जारी हो जाएगा।

.lego/certificates/

निवेदन (2023/02/17)

SELFDNS_LISTEN_ADDRESS में IPv6 पते को निर्दिष्ट करने पर, IPv6 पते के साथ DNS सर्वर शुरू करने का विकल्प जोड़ा गया है। इससे, यदि आपके पास IPv6 का वैश्विक IP है, तो आप Let’s Encrypt के SSL प्रमाण पत्र प्राप्त कर सकते हैं।

  • DNS पंजीकरण
    hoge            60  IN AAAA  20XX:XX:...
    _acme-challenge 60  IN NS hoge.example.jp.
    
  • lego चलाना
    # SELFDNS_LISTEN_ADDRESS=20XX:XX:... SELFDNS_SERVER_HOSTNAME=hoge.example.jp ./lego --email <ईमेल पता> --domains="*.example.jp" --accept-tos --dns=selfdns run
    

इससे, आपके पास मूल्यवान IPv4 पतों का वैश्विक IP नहीं होने पर भी आराम से Let’s Encrypt के SSL प्रमाण पत्र प्राप्त कर सकेंगे! मैंने अपने घर के फ़्लेट्स के IPv6 पते से जारी किया। बेहद सुविधाजनक।