{"id":2674,"date":"2026-02-03T10:35:28","date_gmt":"2026-02-03T09:35:28","guid":{"rendered":"https:\/\/yellotab.se\/x056\/?p=2674"},"modified":"2026-02-03T14:49:50","modified_gmt":"2026-02-03T13:49:50","slug":"dns-01-challenge","status":"publish","type":"post","link":"https:\/\/yellotab.se\/x056\/2026\/02\/03\/dns-01-challenge\/","title":{"rendered":"DNS-01\u00a0challenge"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">DNS-01&nbsp;<strong>challenge<\/strong>&nbsp;\u00e4r ett s\u00e4tt att bevisa f\u00f6r en certifikatutf\u00e4rdare (t.ex. Let\u2019s Encrypt) att&nbsp;<strong>du \u00e4ger en dom\u00e4n<\/strong>&nbsp;\u2013 utan att n\u00e5gon webbtj\u00e4nst beh\u00f6ver vara \u00e5tkomlig fr\u00e5n internet. \ud83d\udd10<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det \u00e4r&nbsp;<strong>nyckeln<\/strong>&nbsp;till att kunna k\u00f6ra&nbsp;<strong>riktiga TLS-cert \u00e4ven p\u00e5 helt lokala tj\u00e4nster<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Grundid\u00e9n (kort och tydligt)<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r du beg\u00e4r ett cert f\u00f6r t.ex.:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">home.jidoka.se<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">s\u00e4ger Let\u2019s Encrypt:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u201cVisa att du kontrollerar&nbsp;jidoka.se\u201d<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Du g\u00f6r det genom att&nbsp;<strong>l\u00e4gga in en s\u00e4rskild TXT-post i DNS<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Hur DNS-01 funkar \u2013 steg f\u00f6r steg<\/strong><\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Du beg\u00e4r ett cert (manuellt eller automatiskt)<\/li>\n\n\n\n<li>Certutf\u00e4rdaren ger dig en\u00a0<strong>token<\/strong>, typ:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">abc123xyz<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><br>   3. Du skapar denna DNS-post:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">_acme-challenge.home.jidoka.se  TXT  &quot;abc123xyz&quot;<\/code><\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Let\u2019s Encrypt kollar DNS:\n<ul class=\"wp-block-list\">\n<li>Finns TXT-posten?<\/li>\n\n\n\n<li>Matchar token?<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u2705 Cert utf\u00e4rdas<\/li>\n\n\n\n<li>TXT-posten kan tas bort igen<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83c\udf89 Klart. Ingen port 80\/443 beh\u00f6ver vara \u00f6ppen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><strong>Varf\u00f6r DNS-01 \u00e4r s\u00e5 bra (j\u00e4mf\u00f6rt med HTTP-01)<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"table has-fixed-layout\"><thead><tr><th><strong>Metod<\/strong><\/th><th><strong>Kr\u00e4ver publik IP<\/strong><\/th><th><strong>Funkar bakom NAT<\/strong><\/th><th><strong>Wildcard<\/strong><\/th><\/tr><\/thead><tbody><tr><td>HTTP-01<\/td><td>\u274c Ja<\/td><td>\u274c Nej<\/td><td>\u274c<\/td><\/tr><tr><td><strong>DNS-01<\/strong><\/td><td>\u2705 Nej<\/td><td>\u2705 Ja<\/td><td>\u2705 Ja<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49&nbsp;<strong>Wildcard-cert (*.home.jidoka.se) kr\u00e4ver DNS-01<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Typiska anv\u00e4ndningsfall<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DNS-01 anv\u00e4nds n\u00e4r:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tj\u00e4nsten \u00e4r\u00a0<strong>endast lokal<\/strong><\/li>\n\n\n\n<li>Du k\u00f6r\u00a0<strong>split DNS<\/strong><\/li>\n\n\n\n<li>Du vill ha\u00a0<strong>wildcard-cert<\/strong><\/li>\n\n\n\n<li>Du k\u00f6r:\n<ul class=\"wp-block-list\">\n<li>Home Assistant<\/li>\n\n\n\n<li>UniFi<\/li>\n\n\n\n<li>Nginx Proxy Manager<\/li>\n\n\n\n<li>Proxmox<\/li>\n\n\n\n<li>OIDC \/ mTLS \/ Zero-Trust<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">(dvs exakt ditt case \ud83d\ude04)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Hur g\u00f6r man detta i praktiken?<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Automatiskt (rekommenderat)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cert-klienten pratar direkt med din DNS-leverant\u00f6rs API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exempel:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>certbot<\/li>\n\n\n\n<li>acme.sh<\/li>\n\n\n\n<li>Nginx Proxy Manager<\/li>\n\n\n\n<li>Traefik<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">De:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>skapar TXT-posten<\/li>\n\n\n\n<li>v\u00e4ntar<\/li>\n\n\n\n<li>tar bort den<\/li>\n\n\n\n<li>f\u00f6rnyar cert var 60\u201390 dag<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Du beh\u00f6ver bara:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API-nyckel till DNS-leverant\u00f6ren<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Manuellt (f\u00f6r test)<\/strong><\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>K\u00f6r cert-klienten<\/li>\n\n\n\n<li>Den s\u00e4ger: \u201cl\u00e4gg till denna TXT-post\u201d<\/li>\n\n\n\n<li>Du loggar in hos DNS-leverant\u00f6ren<\/li>\n\n\n\n<li>L\u00e4gg till posten<\/li>\n\n\n\n<li>V\u00e4nta ~1\u20132 min<\/li>\n\n\n\n<li>Tryck Enter<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Vanliga f\u00e4llor \u26a0\ufe0f<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u274c Gl\u00f6mmer att DNS-posten ska ligga p\u00e5\u00a0<strong>r\u00e4tt niv\u00e5<\/strong><\/li>\n\n\n\n<li>\u274c TTL f\u00f6r h\u00f6gt (anv\u00e4nd 60 sek)<\/li>\n\n\n\n<li>\u274c DNS-provider utan API \u2192 kr\u00e5ngligt att automatisera<\/li>\n\n\n\n<li>\u274c Blandar intern och publik DNS-zon (split DNS ska vara tydlig)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>I din milj\u00f6 (konkret)<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Med&nbsp;jidoka.se&nbsp;skulle jag g\u00f6ra:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wildcard:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">*.home.jidoka.se<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DNS-01 via:\n<ul class=\"wp-block-list\">\n<li>Nginx Proxy Manager\u00a0<strong>eller<\/strong><\/li>\n\n\n\n<li>certbot + DNS-plugin f\u00f6r din DNS-host<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Sedan:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>interna DNS pekar\u00a0*.home.jidoka.se\u00a0\u2192 192.168.x.x<\/li>\n\n\n\n<li>publika DNS beh\u00f6ver\u00a0<strong>inte<\/strong>\u00a0peka n\u00e5gonstans alls<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DNS-01&nbsp;challenge&nbsp;\u00e4r ett s\u00e4tt att bevisa f\u00f6r en certifikatutf\u00e4rdare (t.ex. Let\u2019s Encrypt) att&nbsp;du \u00e4ger en dom\u00e4n&nbsp;\u2013 utan att n\u00e5gon webbtj\u00e4nst beh\u00f6ver vara \u00e5tkomlig fr\u00e5n internet. \ud83d\udd10 Det \u00e4r&nbsp;nyckeln&nbsp;till att kunna k\u00f6ra&nbsp;riktiga TLS-cert \u00e4ven p\u00e5 helt lokala tj\u00e4nster. Grundid\u00e9n (kort och tydligt) N\u00e4r du beg\u00e4r ett cert f\u00f6r t.ex.: s\u00e4ger Let\u2019s Encrypt: \u201cVisa att du kontrollerar&nbsp;jidoka.se\u201d Du [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-2674","post","type-post","status-publish","format-standard","hentry","category-news"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/posts\/2674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/comments?post=2674"}],"version-history":[{"count":4,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/posts\/2674\/revisions"}],"predecessor-version":[{"id":2680,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/posts\/2674\/revisions\/2680"}],"wp:attachment":[{"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/media?parent=2674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/categories?post=2674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yellotab.se\/x056\/wp-json\/wp\/v2\/tags?post=2674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}