* [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge @ 2024-09-17 9:47 Gabriel Goller 2024-09-17 9:47 ` [pbs-devel] [PATCH] schema: add regex for dns domains with wildcard Gabriel Goller 2024-09-18 8:43 ` [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge Christian Ebner 0 siblings, 2 replies; 5+ messages in thread From: Gabriel Goller @ 2024-09-17 9:47 UTC (permalink / raw) To: pbs-devel As already mentioned in our docs [0], wildcard domains are only supported when the dns-challenge is used. If the dns-challenge is not used, throw an error. [0]: https://pbs.proxmox.com/docs/sysadmin.html#wildcard-certificates Signed-off-by: Gabriel Goller <g.goller@proxmox.com> --- src/config/node.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/config/node.rs b/src/config/node.rs index 937beb3a125c..80a503635344 100644 --- a/src/config/node.rs +++ b/src/config/node.rs @@ -272,6 +272,16 @@ impl NodeConfig { if !domains.insert(domain.domain.to_lowercase()) { bail!("duplicate domain '{}' in ACME config", domain.domain); } + if domain.domain.contains('*') + && domain.plugin.map_or(true, |value| { + value.as_str() == "" || value.as_str() == "standalone" + }) + { + bail!( + "wildcard domains like '{}' are only usable with the DNS challenge type", + domain.domain + ); + } } let mut dummy_acceptor = SslAcceptor::mozilla_intermediate_v5(SslMethod::tls()).unwrap(); if let Some(ciphers) = self.ciphers_tls_1_3.as_deref() { -- 2.39.5 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* [pbs-devel] [PATCH] schema: add regex for dns domains with wildcard 2024-09-17 9:47 [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge Gabriel Goller @ 2024-09-17 9:47 ` Gabriel Goller 2024-09-18 8:43 ` [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge Christian Ebner 1 sibling, 0 replies; 5+ messages in thread From: Gabriel Goller @ 2024-09-17 9:47 UTC (permalink / raw) To: pbs-devel Support dns domains with wildcards, f.e. '*.proxmox.com'. This is useful when adding ACME-domains. Signed-off-by: Gabriel Goller <g.goller@proxmox.com> --- proxmox-schema/src/api_types.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/proxmox-schema/src/api_types.rs b/proxmox-schema/src/api_types.rs index fed46257cef2..2e49936e800b 100644 --- a/proxmox-schema/src/api_types.rs +++ b/proxmox-schema/src/api_types.rs @@ -53,9 +53,15 @@ pub const SAFE_ID_REGEX_STR: &str = r"(?:[A-Za-z0-9_][A-Za-z0-9._\-]*)"; #[rustfmt::skip] pub const DNS_LABEL_STR: &str = r"(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?)"; +#[rustfmt::skip] +pub const DNS_LABEL_WILDCARD_STR: &str = r"(?:[a-zA-Z0-9\*](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?)"; + #[rustfmt::skip] pub const DNS_NAME_STR: &str = concatcp!(r"(?:(?:", DNS_LABEL_STR, r"\.)*", DNS_LABEL_STR, ")"); +#[rustfmt::skip] +pub const DNS_NAME_WILDCARD_STR: &str = concatcp!(r"(?:(?:", DNS_LABEL_WILDCARD_STR, r"\.)*", DNS_LABEL_WILDCARD_STR, ")"); + #[rustfmt::skip] pub const DNS_ALIAS_LABEL_STR: &str = r"(?:[a-zA-Z0-9_](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?)"; @@ -99,7 +105,7 @@ const_regex! { pub MULTI_LINE_COMMENT_REGEX = r"(?m)^([[:^cntrl:]]*)$"; pub HOSTNAME_REGEX = r"^(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?)$"; - pub DNS_NAME_REGEX = concatcp!(r"^", DNS_NAME_STR, r"$"); + pub DNS_NAME_REGEX = concatcp!(r"^", DNS_NAME_WILDCARD_STR, r"$"); pub DNS_ALIAS_REGEX = concatcp!(r"^", DNS_ALIAS_NAME_STR, r"$"); pub DNS_NAME_OR_IP_REGEX = concatcp!(r"^(?:", DNS_NAME_STR, "|", IPRE_STR, r")$"); pub HOST_PORT_REGEX = concatcp!(r"^(?:", DNS_NAME_STR, "|", IPRE_BRACKET_STR, "):", PORT_REGEX_STR ,"$"); -- 2.39.5 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge 2024-09-17 9:47 [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge Gabriel Goller 2024-09-17 9:47 ` [pbs-devel] [PATCH] schema: add regex for dns domains with wildcard Gabriel Goller @ 2024-09-18 8:43 ` Christian Ebner 2024-09-18 9:19 ` Christian Ebner 2024-09-18 12:03 ` Gabriel Goller 1 sibling, 2 replies; 5+ messages in thread From: Christian Ebner @ 2024-09-18 8:43 UTC (permalink / raw) To: Proxmox Backup Server development discussion, Gabriel Goller Tried to generate a wildcard certificate using the cloudflare DNS plugin with these patches applied. Unfortunately this fails with an error (domain obfuscated, but its the domain without the "*." prefix): ``` TASK ERROR: no config for domain 'mydomain' ``` So it seem there still is an issue when retrieving the domain from the config here: https://git.proxmox.com/?p=proxmox-backup.git;a=blob;f=src/api2/node/certificates.rs;h=61ef910e47a71a005064d2b1e99d3d97b0d43f51;hb=HEAD#l342 Also, nit inline. On 9/17/24 11:47, Gabriel Goller wrote: > As already mentioned in our docs [0], wildcard domains are only > supported when the dns-challenge is used. If the dns-challenge is not > used, throw an error. > > [0]: https://pbs.proxmox.com/docs/sysadmin.html#wildcard-certificates > > Signed-off-by: Gabriel Goller <g.goller@proxmox.com> > --- > src/config/node.rs | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/src/config/node.rs b/src/config/node.rs > index 937beb3a125c..80a503635344 100644 > --- a/src/config/node.rs > +++ b/src/config/node.rs > @@ -272,6 +272,16 @@ impl NodeConfig { > if !domains.insert(domain.domain.to_lowercase()) { > bail!("duplicate domain '{}' in ACME config", domain.domain); > } > + if domain.domain.contains('*') > + && domain.plugin.map_or(true, |value| { > + value.as_str() == "" || value.as_str() == "standalone" > + }) > + { > + bail!( > + "wildcard domains like '{}' are only usable with the DNS challenge type", nit: Above checks for standalone HTTP challenge, so instead of stating that the wildcard is only usable with DNS challenges, I think it would be better to state that it is not usable with the HTTP challenge instead. > + domain.domain > + ); > + } > } > let mut dummy_acceptor = SslAcceptor::mozilla_intermediate_v5(SslMethod::tls()).unwrap(); > if let Some(ciphers) = self.ciphers_tls_1_3.as_deref() { _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge 2024-09-18 8:43 ` [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge Christian Ebner @ 2024-09-18 9:19 ` Christian Ebner 2024-09-18 12:03 ` Gabriel Goller 1 sibling, 0 replies; 5+ messages in thread From: Christian Ebner @ 2024-09-18 9:19 UTC (permalink / raw) To: Proxmox Backup Server development discussion, Gabriel Goller As a side note in case you missed it: The user reporting this in the community forum [0] also opened an issue in our bugtracker [1], also mentioning issues with the certificate generation. [0] https://forum.proxmox.com/threads/154406/ [1] https://bugzilla.proxmox.com/show_bug.cgi?id=5719 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge 2024-09-18 8:43 ` [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge Christian Ebner 2024-09-18 9:19 ` Christian Ebner @ 2024-09-18 12:03 ` Gabriel Goller 1 sibling, 0 replies; 5+ messages in thread From: Gabriel Goller @ 2024-09-18 12:03 UTC (permalink / raw) To: Christian Ebner; +Cc: Proxmox Backup Server development discussion On 18.09.2024 10:43, Christian Ebner wrote: >Tried to generate a wildcard certificate using the cloudflare DNS >plugin with these patches applied. > >Unfortunately this fails with an error (domain obfuscated, but its the >domain without the "*." prefix): >``` >TASK ERROR: no config for domain 'mydomain' >``` > >So it seem there still is an issue when retrieving the domain from the >config here: >https://git.proxmox.com/?p=proxmox-backup.git;a=blob;f=src/api2/node/certificates.rs;h=61ef910e47a71a005064d2b1e99d3d97b0d43f51;hb=HEAD#l342 yep, noticed this as well, will hopefully be fixed in the next version! >Also, nit inline. > >On 9/17/24 11:47, Gabriel Goller wrote: >>As already mentioned in our docs [0], wildcard domains are only >>supported when the dns-challenge is used. If the dns-challenge is not >>used, throw an error. >> >>[0]: https://pbs.proxmox.com/docs/sysadmin.html#wildcard-certificates >> >>Signed-off-by: Gabriel Goller <g.goller@proxmox.com> >>--- >> src/config/node.rs | 10 ++++++++++ >> 1 file changed, 10 insertions(+) >> >>diff --git a/src/config/node.rs b/src/config/node.rs >>index 937beb3a125c..80a503635344 100644 >>--- a/src/config/node.rs >>+++ b/src/config/node.rs >>@@ -272,6 +272,16 @@ impl NodeConfig { >> if !domains.insert(domain.domain.to_lowercase()) { >> bail!("duplicate domain '{}' in ACME config", domain.domain); >> } >>+ if domain.domain.contains('*') >>+ && domain.plugin.map_or(true, |value| { >>+ value.as_str() == "" || value.as_str() == "standalone" >>+ }) >>+ { >>+ bail!( >>+ "wildcard domains like '{}' are only usable with the DNS challenge type", > >nit: Above checks for standalone HTTP challenge, so instead of stating >that the wildcard is only usable with DNS challenges, I think it would >be better to state that it is not usable with the HTTP challenge >instead. Agree. Thanks for the review! Will send a v2 soon! _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-09-18 12:04 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-09-17 9:47 [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge Gabriel Goller 2024-09-17 9:47 ` [pbs-devel] [PATCH] schema: add regex for dns domains with wildcard Gabriel Goller 2024-09-18 8:43 ` [pbs-devel] [PATCH proxmox-backup] config: check if acme domain with wildcard uses dns challenge Christian Ebner 2024-09-18 9:19 ` Christian Ebner 2024-09-18 12:03 ` Gabriel Goller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox