ACME (Automated Certificate Management Environment) वो protocol है जो free, automated SSL certificates possible बनाता है। इसी तरह Let’s Encrypt — और आपका ACME client (GetHTTPS, Certbot, acme.sh) — actually Certificate Authority के साथ communicate करता है।
RFC 8555 में defined, ACME ने old manual process (CA को CSRs email करना, human review wait करना) को fully automated, cryptographically secure protocol से replace कर दिया।
ACME कैसे काम करता है — 5 steps
┌──────────┐ ┌──────────────┐
│ Client │ ① Account Registration │ CA Server │
│ (GetHTTPS)│ ──────────────────────────→ │ (Let's Encrypt)
│ │ ② New Order (domains) │ │
│ │ ──────────────────────────→ │ │
│ │ ③ Complete Challenges │ │
│ │ ←─────────────────────────── │ │
│ │ ──────────────────────────→ │ │
│ │ ④ Finalize (send CSR) │ │
│ │ ──────────────────────────→ │ │
│ │ ⑤ Download Certificate │ │
│ │ ←─────────────────────────── │ │
└──────────┘ └──────────────┘
Step 1: Account registration
Client एक ACME account key pair create करता है और public key CA के साथ register करता है। यह key future requests में आपकी identity होती है — हर ACME message इसके साथ signed होता है।
कोई email, कोई password, कोई personal info जरूरी नहीं।
Step 2: New order
Client उन domain names की list submit करता है जिनके लिए certificate चाहिए। CA एक “order” create करता है और “authorizations” का set return करता है — per domain एक — हर एक में complete करने के लिए challenges।
Step 3: Challenges complete करें
हर domain के लिए, client को control prove करना होगा। CA challenge types provide करता है:
| Challenge | कैसे काम करता है | Use case |
|---|---|---|
| HTTP-01 | /.well-known/acme-challenge/ पर एक file place करें | सबसे common, simplest |
| DNS-01 | _acme-challenge.domain पर TXT record add करें | Wildcards, no port 80 |
| TLS-ALPN-01 | Port 443 पर special TLS certificate से respond करें | जब port 80 blocked, no DNS access |
Client challenge complete करता है, फिर CA से verify करने को कहता है। CA अपने servers से check करता है — अगर challenge pass होता है, authorization valid mark हो जाता है।
Step 4: Finalize (CSR भेजें)
सभी domains authorized होने के बाद, client certificate के लिए public key वाला CSR (Certificate Signing Request) भेजता है। CA इसे sign करता है और certificate create करता है।
Step 5: Certificate download करें
Client signed certificate chain download करता है — आपका certificate + intermediate CA certificate। Done।
ACME security model
हर ACME request account key use करके JWS (JSON Web Signature) के साथ signed होता है। यह prevent करता है:
- Replay attacks — हर request का unique nonce होता है
- Tampering — Signature पूरी request body cover करता है
- Impersonation — सिर्फ account key holder requests कर सकता है
Account key कभी client से बाहर नहीं जाती। GetHTTPS के साथ, यह Web Crypto API के through आपके browser में create होती है।
GetHTTPS ACME कैसे use करता है
GetHTTPS full ACME protocol आपके browser में run होने वाली JavaScript में implement करता है:
crypto.subtle.generateKey()(Web Crypto API) से Account key create होती है- Same तरह Certificate key create होती है
crypto.subtle.sign()से ACME messages signed होते हैं- pkijs library से CSR create होता है
acme-v02.api.letsencrypt.orgके साथ direct HTTPS communication
कोई server-side proxy नहीं, कोई middleware नहीं। आपका browser directly Let’s Encrypt के ACME API से बात करता है। यह unique है — ज्यादातर ACME clients server पर run होते हैं।
ACME clients comparison
| Client | कहाँ run होता है | ACME v2 | Auto-renewal | Language |
|---|---|---|---|---|
| GetHTTPS | Browser | ✅ | ❌ Manual | JavaScript |
| Certbot | Server CLI | ✅ | ✅ | Python |
| acme.sh | Server CLI | ✅ | ✅ | Shell |
| Caddy | Web server | ✅ | ✅ | Go |
| Traefik | Reverse proxy | ✅ | ✅ | Go |
| Lego | CLI library | ✅ | ✅ | Go |
ACME support करने वाले CAs
ACME Let’s Encrypt ने create किया लेकिन अब कई CAs use करते हैं — open standard है:
| CA | ACME directory URL | Free? |
|---|---|---|
| Let’s Encrypt | acme-v02.api.letsencrypt.org/directory | ✅ |
| ZeroSSL | acme.zerossl.com/v2/DV90 | Limited free |
| Buypass | api.buypass.com/acme/directory | ✅ |
| Google Trust Services | Google Cloud ACME के through | ✅ |
| DigiCert | Enterprise ACME endpoint | Paid |
| Sectigo | Enterprise ACME endpoint | Paid |
FAQ
क्या ACME और Let’s Encrypt same हैं?
नहीं। ACME protocol है (RFC 8555)। Let’s Encrypt एक Certificate Authority है जो ACME use करता है। Other CAs (ZeroSSL, Buypass, Google) भी ACME support करते हैं। ऐसे समझें जैसे HTTP vs Google — HTTP protocol है, Google एक service है जो इसे use करती है।
क्या अपना ACME client बना सकते हैं?
हाँ। Protocol RFC 8555 में fully specified है। GetHTTPS browser-based implementation का example है। ज्यादातर languages के लिए libraries available हैं (Python के लिए certbot, Go के लिए lego, JavaScript के लिए acme.js)।
ACME v2 क्या है?
ACME v2 current version है (RFC 8555), जिसने wildcard certificate support add किया और draft v1 protocol replace किया। सभी modern ACME clients v2 use करते हैं। Let’s Encrypt ने 2021 में v1 endpoint retire किया।
ACME server down होने पर क्या होता है?
Existing certificates काम करते रहते हैं (ये phone home नहीं करते)। बस server ठीक होने तक issue या renew नहीं कर सकते। Let’s Encrypt का high uptime और redundant infrastructure है।