HTTP-01 SSL certificate पाने के लिए सबसे common ACME challenge type है। CA आपके web server से HTTP port 80 पर एक specific file fetch करके verify करता है कि आप domain को control करते हैं। यह DNS-01 से simple है लेकिन wildcard certificates के लिए use नहीं किया जा सकता।
यह कैसे काम करता है
- Let’s Encrypt आपको एक token (एक random string) देता है
- आप
http://yourdomain.com/.well-known/acme-challenge/{token}पर एक file बनाते हैं - File की content key authorization है — token को आपके ACME account key thumbprint के साथ combine किया गया
- Let’s Encrypt public internet से इस URL को fetch करता है
- अगर content match करता है, तो challenge pass हो जाता है और आपका certificate issue हो जाता है
GetHTTPS के साथ, step 1 और 3 automatically handle होते हैं — आपको बस screen पर दिखाए गए values के साथ अपने server पर file रखनी होगी।
Challenge file कैसे रखें
SSH से (Linux/Nginx/Apache)
# Directory बनाएँ
mkdir -p /var/www/html/.well-known/acme-challenge/
# GetHTTPS से exactly सही values के साथ file बनाएँ
echo "KEY_AUTHORIZATION_FROM_GETHTTPS" > /var/www/html/.well-known/acme-challenge/TOKEN_FROM_GETHTTPS
# Verify करें कि यह accessible है
curl http://yourdomain.com/.well-known/acme-challenge/TOKEN_FROM_GETHTTPS
cPanel File Manager से
public_htmlपर navigate करें.well-knownfolder बनाएँ → उसके अंदरacme-challengefolder बनाएँ- Token value के name से एक नई file बनाएँ
- Key authorization को file content के रूप में paste करें
- Ensure करें कि permissions 644 हैं (web server द्वारा readable)
FTP से
- अपने site root से connect करें
.well-known/acme-challenge/directory path बनाएँ- Token name वाली एक text file upload करें जिसमें key authorization हो
Server configuration
कुछ web servers को .well-known से files serve करने के लिए configuration की ज़रूरत होती है:
Nginx
# अगर .well-known 404 return करता है तो अपने server block में जोड़ें
location /.well-known/acme-challenge/ {
root /var/www/html;
allow all;
}
Apache
Apache usually by default .well-known serve करता है। अगर नहीं:
Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/
<Directory "/var/www/html/.well-known/acme-challenge/">
AllowOverride None
Options None
Require all granted
</Directory>
Node.js / Express
app.use('/.well-known/acme-challenge', express.static('challenges'));
Requirements
- Domain को एक public IP address पर resolve होना चाहिए जिस पर आपका server है
- Port 80 open होना चाहिए — Let’s Encrypt हमेशा HTTP पर verify करता है, HTTPS पर नहीं
- Response को HTTP 200 OK return करना चाहिए
- कोई cross-domain redirect नहीं — same-domain HTTP→HTTPS redirect ठीक हैं
- File बिना authentication के accessible होनी चाहिए (कोई Basic Auth नहीं, कोई login wall नहीं)
HTTP-01 कब use करें
| Scenario | HTTP-01? |
|---|---|
| Single domain certificate | ✅ हाँ — सबसे simple option |
| Domain + www certificate | ✅ हाँ — per name एक challenge |
Wildcard certificate (*.example.com) | ❌ नहीं — DNS-01 use करें |
| Port 80 blocked है | ❌ नहीं — DNS-01 use करें |
| Cloudflare proxy के पीछे | ⚠️ पहले DNS को grey-cloud करने की ज़रूरत हो सकती है |
| Server access बिल्कुल नहीं | ❌ नहीं — DNS-01 use करें (सिर्फ DNS access चाहिए) |
HTTP-01 vs DNS-01
| HTTP-01 | DNS-01 | |
|---|---|---|
| आप क्या करते हैं | अपने server पर एक file रखें | DNS में TXT record जोड़ें |
| Required access | Web server file system | Domain DNS settings |
| Port requirement | Port 80 open | कोई नहीं |
| Wildcard support | ❌ | ✅ |
| Speed | Instant (अगर file accessible है) | 1-15 minutes (DNS propagation) |
| CDN के पीछे काम करता है | ⚠️ CDN bypass की ज़रूरत हो सकती है | ✅ हमेशा काम करता है |
| Best for | ज़्यादातर single-domain certificates | Wildcard, no-server-access, CDN setups |
Troubleshooting
Challenge file 404 return करती है
- Exact path check करें —
/.well-known/acme-challenge/TOKENहोना चाहिए बिना किसी extra slash के - File permissions check करें — chmod 644
- Nginx: आपका config dotfiles block कर सकता है। ऊपर दिखाया गया
locationblock जोड़ें - cPanel: File manager
.well-knownhide कर सकता है — “Show Hidden Files” enable करें
File accessible होने के बावजूद challenge fail
- अपने network के बाहर से check करें: किसी और machine से
curl http://yourdomain.com/.well-known/acme-challenge/TOKENrun करें या web-based tool use करें - DNS किसी और server की ओर point हो सकता है — verify करें कि
dig +short yourdomain.comआपके server का IP return करता है - Cloudflare proxy: validation के दौरान temporarily DNS-only (grey cloud) पर switch करें
Port 80 blocked है
कुछ hosts या firewalls port 80 block करते हैं। Options:
- Port 80 open करें (चाहे validation के लिए temporarily)
- DNS-01 challenge पर switch करें — port 80 की ज़रूरत नहीं
- अपने hosting provider से उनके proxy के through
.well-knownallow करने के लिए कहें
”too many requests” error
आपने Let’s Encrypt की rate limits hit कर ली हैं। Wait करें और retry करें। GetHTTPS का pre-check submit करने से पहले file की accessibility verify करके wasted attempts से बचने में help करता है।
FAQs
क्या certificate मिलने के बाद मैं challenge file हटा सकता हूँ?
हाँ। File सिर्फ validation के दौरान ज़रूरी है। एक बार आपका certificate issue हो जाने पर, .well-known/acme-challenge/ directory और उसकी content हटा दें। जब आप renew करेंगे तो नई files बनाएंगे।
क्या file को HTTPS पर serve करना ज़रूरी है?
नहीं। Let’s Encrypt हमेशा HTTP-01 को plain HTTP (port 80) पर verify करता है, चाहे आपकी site HTTPS support करती हो। Same-domain HTTP→HTTPS redirect follow किया जाता है, लेकिन initial request हमेशा HTTP होता है।
क्या मैं एक certificate में multiple domains के लिए HTTP-01 use कर सकता हूँ?
हाँ। Certificate में हर domain को अपनी खुद की challenge file चाहिए। अगर आप example.com और www.example.com के लिए certificate ले रहे हैं, तो आप दो files रखते हैं — per domain एक token। GetHTTPS उन्हें sequentially handle करता है।
GetHTTPS में “pre-check” क्या है?
Let’s Encrypt को submit करने से पहले, GetHTTPS verify करता है कि आपकी challenge file public internet (Google के DNS-over-HTTPS के through) से accessible है। यह rate limit attempts waste होने से पहले configuration errors catch करता है — एक ऐसा feature जो other browser-based tools के पास नहीं है।