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

  1. Du begär ett cert (manuellt eller automatiskt)
  2. Certutfärdaren ger dig en token, typ:
abc123xyz


3. Du skapar denna DNS-post:

_acme-challenge.home.jidoka.se  TXT  "abc123xyz"
  1. Let’s Encrypt kollar DNS:
    • Finns TXT-posten?
    • Matchar token?
  2. ✅ Cert utfärdas
  3. 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)

MetodKräver publik IPFunkar bakom NATWildcard
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)

  1. Kör cert-klienten
  2. Den säger: “lägg till denna TXT-post”
  3. Du loggar in hos DNS-leverantören
  4. Lägg till posten
  5. Vänta ~1–2 min
  6. 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