DNS-01 challenge är ett sätt att bevisa för en certifikatutfärdare (t.ex. Let’s Encrypt) att du äger en domän – utan att någon webbtjänst behöver vara åtkomlig från internet. 🔐
Det är nyckeln till att kunna köra riktiga TLS-cert även på helt lokala tjänster.
Grundidén (kort och tydligt)
När du begär ett cert för t.ex.:
home.jidoka.se
säger Let’s Encrypt:
“Visa att du kontrollerar jidoka.se”
Du gör det genom att lägga in en särskild TXT-post i DNS.
Hur DNS-01 funkar – steg för steg
- Du begär ett cert (manuellt eller automatiskt)
- Certutfärdaren ger dig en token, typ:
abc123xyz
3. Du skapar denna DNS-post:
_acme-challenge.home.jidoka.se TXT "abc123xyz"
- Let’s Encrypt kollar DNS:
- Finns TXT-posten?
- Matchar token?
- ✅ Cert utfärdas
- TXT-posten kan tas bort igen
🎉 Klart. Ingen port 80/443 behöver vara öppen.
Varför DNS-01 är så bra (jämfört med HTTP-01)
| Metod | Kräver publik IP | Funkar bakom NAT | Wildcard |
|---|---|---|---|
| HTTP-01 | ❌ Ja | ❌ Nej | ❌ |
| DNS-01 | ✅ Nej | ✅ Ja | ✅ Ja |
👉 Wildcard-cert (*.home.jidoka.se) kräver DNS-01
Typiska användningsfall
DNS-01 används när:
- Tjänsten är endast lokal
- Du kör split DNS
- Du vill ha wildcard-cert
- Du kör:
- Home Assistant
- UniFi
- Nginx Proxy Manager
- Proxmox
- OIDC / mTLS / Zero-Trust
(dvs exakt ditt case 😄)
Hur gör man detta i praktiken?
Automatiskt (rekommenderat)
Cert-klienten pratar direkt med din DNS-leverantörs API.
Exempel:
- certbot
- acme.sh
- Nginx Proxy Manager
- Traefik
De:
- skapar TXT-posten
- väntar
- tar bort den
- förnyar cert var 60–90 dag
Du behöver bara:
- API-nyckel till DNS-leverantören
Manuellt (för test)
- Kör cert-klienten
- Den säger: “lägg till denna TXT-post”
- Du loggar in hos DNS-leverantören
- Lägg till posten
- Vänta ~1–2 min
- Tryck Enter
Vanliga fällor ⚠️
- ❌ Glömmer att DNS-posten ska ligga på rätt nivå
- ❌ TTL för högt (använd 60 sek)
- ❌ DNS-provider utan API → krångligt att automatisera
- ❌ Blandar intern och publik DNS-zon (split DNS ska vara tydlig)
I din miljö (konkret)
Med jidoka.se skulle jag göra:
- Wildcard:
*.home.jidoka.se
- DNS-01 via:
- Nginx Proxy Manager eller
- certbot + DNS-plugin för din DNS-host
Sedan:
- interna DNS pekar *.home.jidoka.se → 192.168.x.x
- publika DNS behöver inte peka någonstans alls