mirror of
https://github.com/caddyserver/caddy.git
synced 2025-08-07 09:04:04 -04:00
httpcaddyfile: Fix generated config related to ACME global options
If global DNS provider is configured, it does not need to be repeated in the JSON. If acme_* options are used, base automation policies should populate their issuers accordingly. Global issuer settings like acme_* options don't need to specify subjects in the automation policy since they should apply as a global default.
This commit is contained in:
parent
e4447c4ba7
commit
0badb071ef
@ -571,6 +571,10 @@ func fillInGlobalACMEDefaults(issuer certmagic.Issuer, options map[string]any) e
|
|||||||
return fmt.Errorf("acme_dns specified without DNS provider config, but no provider specified with 'dns' global option")
|
return fmt.Errorf("acme_dns specified without DNS provider config, but no provider specified with 'dns' global option")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
acmeIssuer.Challenges = &caddytls.ChallengesConfig{
|
||||||
|
DNS: new(caddytls.DNSChallengeConfig),
|
||||||
|
}
|
||||||
|
} else if globalACMEDNS != nil {
|
||||||
acmeIssuer.Challenges = &caddytls.ChallengesConfig{
|
acmeIssuer.Challenges = &caddytls.ChallengesConfig{
|
||||||
DNS: &caddytls.DNSChallengeConfig{
|
DNS: &caddytls.DNSChallengeConfig{
|
||||||
ProviderRaw: caddyconfig.JSONModuleObject(globalACMEDNS, "name", globalACMEDNS.(caddy.Module).CaddyModule().ID.Name(), nil),
|
ProviderRaw: caddyconfig.JSONModuleObject(globalACMEDNS, "name", globalACMEDNS.(caddy.Module).CaddyModule().ID.Name(), nil),
|
||||||
@ -622,12 +626,18 @@ func newBaseAutomationPolicy(
|
|||||||
_, hasLocalCerts := options["local_certs"]
|
_, hasLocalCerts := options["local_certs"]
|
||||||
keyType, hasKeyType := options["key_type"]
|
keyType, hasKeyType := options["key_type"]
|
||||||
ocspStapling, hasOCSPStapling := options["ocsp_stapling"]
|
ocspStapling, hasOCSPStapling := options["ocsp_stapling"]
|
||||||
|
|
||||||
hasGlobalAutomationOpts := hasIssuers || hasLocalCerts || hasKeyType || hasOCSPStapling
|
hasGlobalAutomationOpts := hasIssuers || hasLocalCerts || hasKeyType || hasOCSPStapling
|
||||||
|
|
||||||
|
globalACMECA := options["acme_ca"]
|
||||||
|
globalACMECARoot := options["acme_ca_root"]
|
||||||
|
_, globalACMEDNS := options["acme_dns"] // can be set to nil (to use globally-defined "dns" value instead), but it is still set
|
||||||
|
globalACMEEAB := options["acme_eab"]
|
||||||
|
globalPreferredChains := options["preferred_chains"]
|
||||||
|
hasGlobalACMEDefaults := globalACMECA != nil || globalACMECARoot != nil || globalACMEDNS || globalACMEEAB != nil || globalPreferredChains != nil
|
||||||
|
|
||||||
// if there are no global options related to automation policies
|
// if there are no global options related to automation policies
|
||||||
// set, then we can just return right away
|
// set, then we can just return right away
|
||||||
if !hasGlobalAutomationOpts {
|
if !hasGlobalAutomationOpts && !hasGlobalACMEDefaults {
|
||||||
if always {
|
if always {
|
||||||
return new(caddytls.AutomationPolicy), nil
|
return new(caddytls.AutomationPolicy), nil
|
||||||
}
|
}
|
||||||
@ -649,6 +659,14 @@ func newBaseAutomationPolicy(
|
|||||||
ap.Issuers = []certmagic.Issuer{new(caddytls.InternalIssuer)}
|
ap.Issuers = []certmagic.Issuer{new(caddytls.InternalIssuer)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if hasGlobalACMEDefaults {
|
||||||
|
for i := range ap.Issuers {
|
||||||
|
if err := fillInGlobalACMEDefaults(ap.Issuers[i], options); err != nil {
|
||||||
|
return nil, fmt.Errorf("filling in global issuer defaults for issuer %d: %v", i, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if hasOCSPStapling {
|
if hasOCSPStapling {
|
||||||
ocspConfig := ocspStapling.(certmagic.OCSPConfig)
|
ocspConfig := ocspStapling.(certmagic.OCSPConfig)
|
||||||
ap.DisableOCSPStapling = ocspConfig.DisableStapling
|
ap.DisableOCSPStapling = ocspConfig.DisableStapling
|
||||||
|
@ -34,17 +34,10 @@ example.com {
|
|||||||
"automation": {
|
"automation": {
|
||||||
"policies": [
|
"policies": [
|
||||||
{
|
{
|
||||||
"subjects": [
|
|
||||||
"example.com"
|
|
||||||
],
|
|
||||||
"issuers": [
|
"issuers": [
|
||||||
{
|
{
|
||||||
"challenges": {
|
"challenges": {
|
||||||
"dns": {
|
"dns": {}
|
||||||
"provider": {
|
|
||||||
"name": "mock"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"module": "acme"
|
"module": "acme"
|
||||||
}
|
}
|
||||||
|
@ -31,9 +31,6 @@ example.com
|
|||||||
"automation": {
|
"automation": {
|
||||||
"policies": [
|
"policies": [
|
||||||
{
|
{
|
||||||
"subjects": [
|
|
||||||
"example.com"
|
|
||||||
],
|
|
||||||
"issuers": [
|
"issuers": [
|
||||||
{
|
{
|
||||||
"module": "acme",
|
"module": "acme",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user