सवाल लेट एन्क्रिप्ट डीएनएस चुनौती सत्यापन का उपयोग कैसे करें?


आइए एन्क्रिप्ट करें की घोषणा की उनके पास है:

एसीएमई DNS चुनौती के लिए समर्थन चालू कर दिया

मैं कैसे करूँ ./letsencrypt-auto DNS चुनौती डोमेन सत्यापन का उपयोग कर एक नया प्रमाणपत्र उत्पन्न करें?

संपादित करें
मेरा मतलब है: मैं कैसे बचूं http/https पोर्ट बाध्यकारी, नई घोषणा की गई सुविधा (2015-01-20) का उपयोग करके जो आपको लक्षित डोमेन के DNS ज़ोन में एक विशिष्ट TXT रिकॉर्ड जोड़कर डोमेन स्वामित्व साबित करने देता है?


122
2018-01-21 22:13


मूल


पक्षीय लेख: Certbot (यह letencrypt क्लाइंट के लिए नया नाम है) अब डिफ़ॉल्ट रूप से वेबूट-आधारित प्रमाणीकरण की अनुमति देता है। - Pierre Prinetti


जवाब:


वर्तमान में एक DNS सत्यापन भी करना संभव है certbot मैन्युअल मोड में क्लाइंट एन्क्रिप्टेड क्लाइंट। स्वचालन भी संभव है (नीचे देखें)।

मैनुअल प्लगइन

मैन्युअल प्लगइन के साथ आप या तो मैन्युअल सत्यापन कर सकते हैं।

certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly

प्रमाणीकरण के साथ आगे बढ़ने के लिए सर्टबॉट आपको डोमेन के लिए एक TXT रिकॉर्ड मैन्युअल रूप से अपडेट करने के लिए निर्देश प्रदान करेगा।

Please deploy a DNS TXT record under the name
_acme-challenge.bristol3.pki.enigmabridge.com with the following value:

667drNmQL3vX6bu8YZlgy0wKNBlCny8yrjF1lSaUndc

Once this is deployed,
Press ENTER to continue

एक बार जब आप DNS रिकॉर्ड अपडेट कर लेते हैं, तो एंटर दबाएं, प्रमाणपत्रबॉट जारी रहेगा और यदि LetsEncrypt CA चुनौती की पुष्टि करता है, प्रमाणपत्र सामान्य रूप से जारी किया जाता है।

आप अंतःक्रियाशीलता को कम करने और प्रमाण-पत्र प्रश्नों का उत्तर देने के लिए अधिक विकल्पों के साथ एक कमांड का उपयोग भी कर सकते हैं। ध्यान दें कि मैन्युअल प्लगइन अभी तक गैर-इंटरैक्टिव मोड का समर्थन नहीं करता है।

certbot --text --agree-tos --email you@example.com -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns --expand --renew-by-default  --manual-public-ip-logging-ok certonly

नवीनीकरण मैन्युअल प्लगइन के साथ काम नहीं करता है क्योंकि यह गैर-इंटरैक्टिव मोड में चलता है। आधिकारिक सर्टबॉट पर अधिक जानकारी प्रलेखन

अद्यतन: मैनुअल हुक

नए सर्टबॉट संस्करण में आप उपयोग कर सकते हैं हुक, उदा। --manual-auth-hook, --manual-cleanup-hook। हुक कार्य करने के लिए सर्टबॉट द्वारा निष्पादित बाहरी स्क्रिप्ट हैं।

जानकारी पर्यावरण चर में पारित की जाती है - उदाहरण के लिए, डोमेन को मान्य करने के लिए, टोकन को चुनौती दें। Vars: CERTBOT_DOMAIN, CERTBOT_VALIDATION, CERTBOT_TOKEN

certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /path/to/dns/authenticator.sh --manual-cleanup-hook /path/to/dns/cleanup.sh -d secure.example.com

आप अपना खुद का हैंडलर लिख सकते हैं या पहले से मौजूद उपयोग कर सकते हैं, कई उपलब्ध हैं, उदाहरण के लिए, क्लाउडफ्लॉवर DNS के लिए।

आधिकारिक सर्टबॉट पर अधिक जानकारी हुक दस्तावेज

स्वचालन, नवीनीकरण, स्क्रिप्टिंग

यदि आप DNS चुनौतियों के सत्यापन को स्वचालित करना चाहते हैं तो यह वर्तमान में वेनिला प्रमाणपत्र के साथ संभव नहीं है। अद्यतन: सर्टबॉट हुक के साथ कुछ स्वचालन संभव है।

इस प्रकार हमने एक साधारण प्लगइन बनाया जो डीएनएस स्वचालन के साथ स्क्रिप्टिंग का समर्थन करता है। यह के रूप में उपलब्ध है certbot-बाहरी लेखन

pip install certbot-external-auth

यह DNS, HTTP, TLS-SNI सत्यापन विधियों का समर्थन करता है। आप या तो हैंडलर मोड या JSON आउटपुट मोड में इसका उपयोग कर सकते हैं।

हैंडलर मोड

हैंडलर मोड में, प्रमाण-पत्र + प्लगइन सत्यापन और स्थापना करने के लिए बाहरी हुक (एक प्रोग्राम, खोल स्क्रिप्ट, पायथन, ...) कहते हैं। अभ्यास में आप एक साधारण हैंडलर / खोल स्क्रिप्ट लिखते हैं जो इनपुट तर्क प्राप्त करता है - डोमेन, टोकन और DNS में परिवर्तन करता है। जब हैंडलर समाप्त होता है, तो प्रमाण पत्र सामान्य रूप से प्रमाणीकरण के साथ आता है।

यह आपको अतिरिक्त लचीलापन देता है, नवीनीकरण भी संभव है।

हैंडलर मोड भी संगत है निर्जलित DNS हुक (पूर्व letsencrypt.sh)। आम प्रदाताओं के लिए पहले से ही कई DNS हुक हैं (उदा। क्लाउडफ्लेयर, गोडाडी, एडब्ल्यूएस)। भंडार में व्यापक उदाहरण और उदाहरण हैंडलर के साथ एक README है।

के साथ उदाहरण निर्जलित DNS हुक:

certbot \
    --text --agree-tos --email you@example.com \
    --expand --renew-by-default \
    --configurator certbot-external-auth:out \
    --certbot-external-auth:out-public-ip-logging-ok \
    -d "bristol3.pki.enigmabridge.com" \
    --preferred-challenges dns \
    --certbot-external-auth:out-handler ./dehydrated-example.sh \
    --certbot-external-auth:out-dehydrated-dns \
    run 

JSON मोड

एक और प्लगइन मोड JSON मोड है। यह प्रति पंक्ति एक JSON ऑब्जेक्ट उत्पन्न करता है। यह एक अधिक जटिल एकीकरण को सक्षम बनाता है - उदाहरण के लिए, उत्तरदायी या कुछ परिनियोजन प्रबंधक प्रमाणपत्रबॉट कॉल कर रहा है। संचार STDOUT और STDIN के माध्यम से किया जाता है। Cerbot प्रमाणीकरण करने के लिए डेटा के साथ JSON ऑब्जेक्ट उत्पन्न करता है, उदाहरण के लिए,

certbot \
    --text --agree-tos --email you@example.com \
    --expand --renew-by-default \
    --configurator certbot-external-auth:out \
    --certbot-external-auth:out-public-ip-logging-ok \
    -d "bristol3.pki.enigmabridge.com" \
    --preferred-challenges dns \
    certonly 2>/dev/null

{"cmd": "perform_challenge", "type": "dns-01", "domain": "bs3.pki.enigmabridge.com", "token": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4", "validation": "ejEDZXYEeYHUxqBAiX4csh8GKkeVX7utK6BBOBshZ1Y", "txt_domain": "_acme-challenge.bs3.pki.enigmabridge.com", "key_auth": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4.tRQM98JsABZRm5-NiotcgD212RAUPPbyeDP30Ob_7-0"}

एक बार DNS अपडेट हो जाने पर, कॉलर प्रमाणन के एसटीडीआईएन को नया-लाइन वर्ण भेजता है ताकि यह संकेत हो सके कि यह सत्यापन के साथ जारी रख सकता है।

यह केंद्रीय प्रबंधन सर्वर से स्वचालन और प्रमाणपत्र प्रबंधन को सक्षम बनाता है। स्थापना के लिए आप एसएसएच पर प्रमाण पत्र तैनात कर सकते हैं।

अधिक जानकारी के लिए कृपया रीडमी और उदाहरण देखें certbot-बाहरी लेखन GitHub।

संपादित करें: एक नया भी है ब्लॉग पोस्ट DNS सत्यापन समस्या और प्लगइन उपयोग का वर्णन।

संपादित करें: हम वर्तमान में उत्तर 2-चरणीय सत्यापन पर काम करते हैं, जल्द ही बंद हो जाएगा।


154
2017-10-29 13:00



किसी अन्य सर्वर पर किसी वेबसाइट को माइग्रेट करते समय आप ए-रिकॉर्ड स्विच करने से पहले एक नया प्रमाणपत्र चाहते हैं। आप मैन्युअल विधि का उपयोग कर सकते हैं (certbot certonly --preferred-challenges dns -d example.com) प्रारंभिक अनुरोध के लिए। ए-रिकॉर्ड का परीक्षण और स्विच करने के बाद, सामान्य वेबूट विधि का उपयोग करें (certbot certonly webroot -d example.com -w /path/to/webroot) पहले के समान डोमेन नाम (ओं) का उपयोग कर। यदि सही तरीके से किया जाता है, तो प्रमाणपत्रबॉट मौजूदा प्रमाणपत्र / कॉन्फ़िगरेशन को पहचान लेगा और नवीकरण सेटिंग्स अपडेट करेगा, इसलिए प्रमाणपत्र भविष्य में स्वचालित रूप से नवीनीकृत हो जाएगा। - marcovtwout
यह काम करता है, ईसी 2 स्तर पर एडब्ल्यूएस फ़ायरवॉल से सावधान रहें - jruzafa
मुझे यकीन है कि क्या जानना है - मैनुअल-पब्लिक-आईपी-लॉगिंग-ओके का मतलब है .... दस्तावेज़ीकरण इसके बारे में गूढ़ है और इसका उपयोग करने वाले सभी उदाहरणों में यह समझाया नहीं गया है ... इसमें शामिल है। - Rondo
क्या नवीकरण प्रक्रिया को हर बार एक नया TXT रिकॉर्ड की आवश्यकता होती है? - Old Geezer
@OldGeezer जाहिर है, यह करता है। मैंने प्रक्रिया शुरू की और उसने मुझे पिछली बार की तुलना में विभिन्न सामग्रियों के साथ एक TXT रिकॉर्ड बनाने के लिए कहा। - Dario Fumagalli


मैं इसका उपयोग करने में सक्षम था dehydrated क्लाइंट DNS सत्यापन का उपयोग कर प्रमाण पत्र प्राप्त करने के लिए।

https://github.com/lukas2511/dehydrated

./dehydrated --cron --domain my.domain.example.com --hook ./hook.route53.rb --challenge dns-01

आपको अपने डोमेन के लिए सही DNS सत्यापन हुक का उपयोग करने की आवश्यकता होगी, लेकिन उदाहरण के रूप में कुछ विकल्प उपलब्ध हैं:

https://github.com/lukas2511/dehydrated/wiki/Examples-for-DNS-01-hooks


37
2018-02-18 21:45



यह मेरे लिए वास्तव में अच्छा काम किया। एकमात्र चेतावनी जो मैं जोड़ूंगा वह यह है कि मुझे परिभाषित कुछ मणि निर्भरताओं को स्थापित करना था route53.rb हुक स्क्रिप्ट। - jmreicha


आज तक, आधिकारिक ग्राहक DNS-01 चुनौती प्रकार (अभी तक) का समर्थन नहीं करता है।

देख https://community.letsencrypt.org/t/status-of-official-letsencrypt-clients-dns-01-challenge-support/9427

मैंने इस पर ध्यान नहीं दिया है इसलिए मुझे वास्तव में पता नहीं है। मेरी उच्च स्तरीय समझ अभी तक "हमारे पायथन क्लाइंट में अभी तक DNS चुनौती के लिए कोई समर्थन नहीं है"।

आप प्रगति का पालन कर सकते हैं यह पीआर। वैकल्पिक रूप से, वहाँ हैं कुछ ग्राहक जो पहले से ही इसका समर्थन करता है।


10
2018-01-28 11:34





मैंने एक लिखा हुक स्क्रिप्ट के लिए letsencrypt.sh क्लाइंट जो आपको DNS प्रदाताओं के लिए DNS एन्क्रिप्ट डीएनटी सत्यापन का उपयोग करने की अनुमति देता है जो उपयोग करने के लिए एपीआई प्रदान नहीं करता है (उर्फ, मैन्युअल प्रविष्टि और सत्यापन आवश्यक है)।

आप इसे यहां क्लिक कर सकते हैं: https://github.com/jbjonesjr/letsencrypt-manual-hook


5
2018-05-22 16:55





जैसा कि पिछले उत्तरों में बताया गया है, आप इसके साथ DNS द्वारा डोमेन को आसानी से सत्यापित कर सकते हैं:

  1. आवश्यक अनुप्रयोग स्थापित करें (उबंटू के तहत): apt-get install -y git ruby letsencrypt git clone https://github.com/lukas2511/dehydrated.git git clone https://github.com/jbjonesjr/letsencrypt-manual-hook.git dehydrated/hooks/manual
  2. www.example.com के लिए मैन्युअल DNS चुनौती पुष्टि के साथ प्रमाणपत्र उत्पन्न करें (अपने डोमेन के साथ प्रतिस्थापित करें): ./dehydrated/dehydrated -c -t dns-01 -d www.example.com -k ./dehydrated/hooks /manual/manual_hook.rb

3
2017-12-16 10:36





विभिन्न संयोजनों की कोशिश करने के बाद, यह मेरे लिए उपयोग करने के लिए काम किया है निर्जलित तथा letsencrypt-पुस्तिका हुक गिट भंडार यदि नीचे दिए गए कदम आपके लिए काम करते हैं, तो भूलना न भूलें तारा इन भंडारों

नोट: यह panticz.de और alexcline के उत्तरों के अतिरिक्त है

~$ git clone https://github.com/lukas2511/dehydrated.git
~$ git clone https://github.com/jbjonesjr/letsencrypt-manual-hook.git dehydrated/hooks/manual
~$ cd dehydrated
~$ ./dehydrated --register --accept-terms
~$ ./dehydrated --cron --challenge dns-01 --domain your.domain.com --hook ./hooks/manual/manual_hook.rb
#
# !! WARNING !! No main config file found, using default config!
#
Processing your.domain.com
 + Signing domains...
 + Creating new directory /Users/vikas/dehydrated/certs/your.domain.com ...
 + Creating chain cache directory /Users/vikas/dehydrated/chains
 + Generating private key...
 + Generating signing request...
 + Requesting authorization for your.domain.com...
 + 1 pending challenge(s)
 + Deploying challenge tokens...
Checking for pre-existing TXT record for the domain: '_acme-challenge.your.domain.com'.
Create TXT record for the domain: '_acme-challenge.your.domain.com'. TXT record:
'gkIxxxxxxxIcAESmjF8pjZGQrrZxxxxxxxxxxx'
Press enter when DNS has been updated...

आपको एक हैश मिलेगा (उपर्युक्त आदेश चलाने के बाद), एक बनाएं टेक्स्ट अपने DNS में रिकॉर्ड करें। सुनिश्चित करें कि यह या तो निम्न आदेश चला रहा है या जीएसयूइट टूलबॉक्स

~$ dig TXT _acme-challenge.your.domain.com. +short @8.8.8.8
"gkIxxxxxxxIcAESmjF8pjZGQrrZxxxxxxxxxxx"
~$

अब, दबाएं दर्ज प्रॉम्प्ट पर यह मेरे लिए काम नहीं करता है हालांकि TXT रिकॉर्ड अपडेट किया गया था। मुझे Ctrl + C दबाकर फिर कमांड चलाया गया था।

~$ ./dehydrated --cron --challenge dns-01 --domain your.domain.com --hook ./hooks/manual/manual_hook.rb
#
# !! WARNING !! No main config file found, using default config!
#
Processing your.domain.com
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting authorization for your.domain.com...
 + 1 pending challenge(s)
 + Deploying challenge tokens...
Checking for pre-existing TXT record for the domain: '_acme-challenge.your.domain.com'.
Found gkIxxxxxxxIcAESmjF8pjZGQrrZxxxxxxxxxxx. match.
 + Responding to challenge for your.domain.com authorization...
Challenge complete. Leave TXT record in place to allow easier future refreshes.
 + Challenge is valid!
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Walking chain...
 + Done!
~$

अब, आपके सार्वजनिक और निजी कॉर्ट यहां मौजूद हैं।

$ ls certs/your.domain.com/privkey.pem certs/your.domain.com/fullchain-1517576424.pem

नवीनीकरण करने के लिए (न्यूनतम प्रतीक्षा समय 30 दिन है), बस वही आदेश दोबारा।

~$ ./dehydrated --cron --challenge dns-01 --domain your.domain.com --hook ./hooks/manual/manual_hook.rb

2
2018-02-02 13:44





ह्यूगो लैंडौ ने गो में एक एसीएमई क्लाइंट लिखा (https://github.com/hlandau/acme) जो DNS चुनौतियों का समर्थन करता है (BIND के nsupdate प्रोटोकॉल के साथ)। यह कम से कम 18 महीने के लिए मेरे लिए बेकार ढंग से काम कर रहा है।


0
2017-07-03 18:07