From b2401a695c52ef69690ebbd45461acb3ab926f8a Mon Sep 17 00:00:00 2001 From: sdsys-ch <100968265+sdsys-ch@users.noreply.github.com> Date: Wed, 24 Sep 2025 08:45:05 +0200 Subject: [PATCH] www/caddy: Add DNS-01 challenge delegation via CNAME (#4950) * caddy: Add DNS-01 override domain feature Adds support for DNS-01 CNAME delegation through the dns_challenge_override_domain directive. This enables least-privilege DNS setups where the certificate domain delegates ACME challenges to a target domain managed by the configured DNS provider. * Review feedback: Remove default defs and align validation string with existing one --------- Co-authored-by: Christophe Neuerburg --- .../OPNsense/Caddy/forms/dialogReverseProxy.xml | 10 ++++++++++ .../opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml | 4 ++++ .../service/templates/OPNsense/Caddy/Caddyfile | 5 +++++ 3 files changed, 19 insertions(+) diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogReverseProxy.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogReverseProxy.xml index a2b3d6758..ed431a6db 100644 --- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogReverseProxy.xml +++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogReverseProxy.xml @@ -73,6 +73,16 @@ boolean + + reverse.DnsChallengeOverrideDomain + + text + + true + + false + + reverse.DynDns diff --git a/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml b/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml index a8d123495..8a1ffeb46 100644 --- a/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml +++ b/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml @@ -212,6 +212,10 @@ + + N + Please enter a valid domain name. + Auto HTTPS diff --git a/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile b/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile index e7c7168e9..8e8e89b95 100644 --- a/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile +++ b/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile @@ -302,6 +302,7 @@ http://{{ domain }} { {% macro tls_configuration( customCert="", dnsChallenge="0", + dnsChallengeOverrideDomain="", clientAuthTrustPool="", clientAuthMode="", dnsProvider="", @@ -316,6 +317,9 @@ http://{{ domain }} { {% if not customCert and (dnsChallenge == "1" and dnsProvider) %} issuer acme { dns {{ dnsProvider }} {{ dnsApiKey }} + {% if dnsChallengeOverrideDomain %} + dns_challenge_override_domain {{ dnsChallengeOverrideDomain }} + {% endif %} {% if tlsDnsPropagationResolvers %} resolvers {{ tlsDnsPropagationResolvers }} @@ -622,6 +626,7 @@ http://{{ domain }} { {{ tls_configuration( customCert=reverse.CustomCertificate|default(""), dnsChallenge=reverse.DnsChallenge|default("0"), + dnsChallengeOverrideDomain=reverse.DnsChallengeOverrideDomain|default(""), clientAuthTrustPool=reverse.ClientAuthTrustPool|default(""), clientAuthMode=reverse.ClientAuthMode|default(""), dnsProvider=generalSettings.TlsDnsProvider,