DNS-01 वो ACME challenge type है जो wildcard certificates (*.example.com) को support करता है। यह आपके DNS में TXT record जोड़कर domain ownership prove करता है — किसी web server या port 80 access की ज़रूरत नहीं।
यह कैसे काम करता है
- Let’s Encrypt हर domain के लिए एक token देता है
- GetHTTPS key authorization का SHA-256 digest calculate करता है और उसे base64url-encode करता है
- आप इस value के साथ
_acme-challenge.yourdomain.comपर एक TXT record बनाते हैं - Let’s Encrypt TXT record के लिए public DNS को query करता है
- अगर value match करता है, तो challenge pass हो जाता है और certificate issue हो जाता है
GetHTTPS के साथ, step 1-2 automatic हैं — आपको बस record name और value अपने DNS provider में copy-paste करना होगा।
Step-by-step setup
Step 1: GetHTTPS से TXT record details लें
GetHTTPS आपको दिखाता है:
- Record name:
_acme-challenge.yourdomain.com - Record value: एक base64url-encoded string (~43 characters)
Step 2: अपने DNS provider पर TXT record जोड़ें
| Field | Value |
|---|---|
| Type | TXT |
| Name | _acme-challenge (कुछ providers automatically domain जोड़ देते हैं) |
| Value | GetHTTPS में दिखाई गई string — exactly वैसे ही copy-paste करें |
| TTL | 60 seconds (या आपके provider का minimum allowed) |
Provider-specific instructions:
Cloudflare
- Dashboard → आपका domain → DNS → Records → Add record
- Type: TXT, Name:
_acme-challenge, Content: value paste करें - TTL: Auto
- Save पर click करें
AWS Route 53
- Hosted zones → आपका domain → Create record
- Record name:
_acme-challenge - Record type: TXT
- Value:
"paste-value-here"(double quotes include करें — Route 53 के लिए ज़रूरी हैं) - TTL: 300
- Create records पर click करें
GoDaddy
- DNS Management → Add
- Type: TXT, Name:
_acme-challenge, Value: value paste करें - TTL: 1 Hour (available minimum)
- Save पर click करें
Namecheap
- Domain List → Manage → Advanced DNS → Add new record
- Type: TXT, Host:
_acme-challenge, Value: value paste करें - TTL: Automatic
- Save all changes पर click करें
Google Cloud DNS
gcloud dns record-sets create _acme-challenge.yourdomain.com. \
--zone=your-zone --type=TXT --ttl=60 --rrdatas="the-value"
DigitalOcean
- Networking → Domains → आपका domain → Add record
- Type: TXT, Hostname:
_acme-challenge, Value: value paste करें - TTL: 30
Step 3: DNS propagation का wait करें
DNS changes आपके provider और TTL settings के हिसाब से 1-15 minutes लेते हैं। GetHTTPS का pre-check Let’s Encrypt को submit करने से पहले verify करता है कि TXT record public internet से visible है।
Manually propagation check करें:
dig TXT _acme-challenge.yourdomain.com +short
# आपका value (quotes में) return होना चाहिए
या online propagation checker use करके देखें कि record globally visible है या नहीं।
Step 4: GetHTTPS में verify करें
Verify पर click करें। GetHTTPS challenge को Let’s Encrypt को submit करता है। अगर TXT record सही है, तो certificate issue हो जाता है।
Step 5: Cleanup
Certificate issue होने के बाद, अपने DNS से _acme-challenge TXT record हटा दें। इसकी अब ज़रूरत नहीं है और पुराने records छोड़ने से renewal के दौरान confusion हो सकता है।
DNS-01 के साथ wildcard certificates
*.yourdomain.com के लिए certificate पाने के लिए, आपको DNS-01 use करना होगा। HTTP-01 wildcard को validate नहीं कर सकता क्योंकि wildcard infinite hostnames को cover करता है — file रखने के लिए कोई single server नहीं है।
Wildcard + bare domain: अगर आप *.example.com और example.com दोनों चाहते हैं, तो GetHTTPS को दो validations की ज़रूरत हो सकती है। कुछ setups में _acme-challenge.example.com पर एक साथ दो TXT records की ज़रूरत होती है — एक wildcard के लिए, एक apex के लिए। दोनों records तब तक रखें जब तक validation pass न हो जाए।
Full wildcard certificate guide →
DNS-01 vs HTTP-01
| DNS-01 | HTTP-01 | |
|---|---|---|
| आप क्या करते हैं | DNS में TXT record जोड़ें | अपने server पर एक file रखें |
| Required access | Domain DNS settings | Web server file system |
| Port requirement | कोई नहीं | Port 80 open होना चाहिए |
| Wildcard support | ✅ Wildcard के लिए ज़रूरी | ❌ |
| बिना server के काम करता है | ✅ | ❌ |
| Speed | 1-15 minutes (DNS propagation) | Instant (अगर file accessible है) |
| CDN के पीछे काम करता है | ✅ हमेशा | ⚠️ CDN bypass की ज़रूरत हो सकती है |
| Best for | Wildcard, server-less, CDN setups | ज़्यादातर single-domain certificates |
DNS-01 चुनें जब: आपको wildcard चाहिए, port 80 blocked है, आपका server publicly accessible नहीं है, या आप CDN के पीछे हैं।
HTTP-01 चुनें जब: आपके पास web server है, port 80 open है, और आपको wildcard की ज़रूरत नहीं है। यह faster है (कोई propagation wait नहीं)।
Troubleshooting
GetHTTPS को TXT record नहीं मिला
- और wait करें — कुछ providers को 5-15 minutes लगते हैं। Low TTL help करता है लेकिन propagation time को eliminate नहीं करता।
- Record name check करें: कुछ providers automatically domain जोड़ देते हैं। अगर आप
_acme-challenge.example.comenter करते हैं और provider.example.comजोड़ देता है, तो actual record_acme-challenge.example.com.example.comबन जाता है (गलत)। सिर्फ_acme-challengeenter करें और provider को add करने दें। - Manually verify करें:
अगर यह empty return करता है, तो record अभी propagate नहीं हुआ है।dig TXT _acme-challenge.yourdomain.com +short
Wrong value / case mismatch
- Value case-sensitive है। GetHTTPS से directly copy-paste करें — इसे दोबारा type न करें।
- जब तक आपका DNS provider quotes require नहीं करता (Route 53 करता है, ज़्यादातर बाकी नहीं), quotes न जोड़ें।
Multiple TXT records conflict
- नया add करने से पहले पिछले attempts के पुराने
_acme-challengeTXT records हटा दें। - Exception: wildcard + apex validation के लिए एक ही name पर एक साथ दो records की ज़रूरत हो सकती है।
DNS provider TXT records support नहीं करता
Rare है, लेकिन कुछ basic DNS services में TXT support नहीं है। एक full-featured DNS provider पर switch करें (Cloudflare का free plan सभी record types support करता है)।
DNS-01 कब use करें
| Scenario | DNS-01? |
|---|---|
Wildcard certificate (*.example.com) | ✅ Required |
| Port 80 blocked है | ✅ Best option |
| Internal network पर server | ✅ Only option |
| Cloudflare/CDN proxy के पीछे | ✅ Proxy issues से बचाता है |
| बिना server वाला domain (parking, redirect) | ✅ Only option |
| Server access के साथ simple single-domain certificate | ⚠️ HTTP-01 faster है |
FAQs
क्या मैं DNS-01 challenges को automate कर सकता हूँ?
हाँ, CLI tools के साथ। acme.sh में 150+ DNS providers के लिए built-in API integrations हैं — यह automatically TXT records add और remove कर सकता है। Certbot major providers के लिए DNS plugins support करता है। GetHTTPS को manual DNS changes की ज़रूरत होती है (browser-based, कोई API calls नहीं)।
क्या ACME client को अपनी DNS API key देना safe है?
API key के पास आपके DNS zone तक write access है, इसलिए इसे अपने server credentials जितनी security के साथ treat करें। जब possible हो तो scoped API tokens use करें (जैसे, Cloudflare के per-zone tokens)। Maximum security के लिए, manual DNS changes के साथ GetHTTPS use करें — कोई API key involved नहीं।
TXT record कितने समय तक रखना होगा?
सिर्फ validation के दौरान — usually कुछ minutes। एक बार आपका certificate issue हो जाने पर, record हटा दें। जब आप renew करेंगे तो नई value के साथ एक नया record बनाएंगे।
अगर मेरा DNS provider propagation में slow है तो क्या करें?
TTL को अपने provider का minimum allowed (ideally 60 seconds) पर set करें। अगर propagation में 15 minutes से ज़्यादा लगता है, तो record name/value में typo check करें, या कोई दूसरा DNS provider try करें। Cloudflare seconds में TXT records propagate करता है।
क्या DNS-01 Cloudflare proxy (orange cloud) के साथ काम करता है?
हाँ। DNS-01 validation DNS के through TXT records को query करता है, HTTP के through नहीं — इसलिए Cloudflare proxy status (orange vs grey cloud) से कोई फ़र्क नहीं पड़ता। यह HTTP-01 पर एक major advantage है, जिसे proxy block कर सकता है।