mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-01 04:22:36 +08:00 
			
		
		
		
	Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
This commit is contained in:
		| @ -15,6 +15,8 @@ | ||||
| package httpcaddyfile | ||||
|  | ||||
| import ( | ||||
| 	"slices" | ||||
|  | ||||
| 	"github.com/caddyserver/caddy/v2" | ||||
| 	"github.com/caddyserver/caddy/v2/caddyconfig" | ||||
| 	"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile" | ||||
| @ -178,6 +180,15 @@ func (st ServerType) buildPKIApp( | ||||
| 	if _, ok := options["skip_install_trust"]; ok { | ||||
| 		skipInstallTrust = true | ||||
| 	} | ||||
|  | ||||
| 	// check if auto_https is off - in that case we should not create | ||||
| 	// any PKI infrastructure even with skip_install_trust directive | ||||
| 	autoHTTPS := []string{} | ||||
| 	if ah, ok := options["auto_https"].([]string); ok { | ||||
| 		autoHTTPS = ah | ||||
| 	} | ||||
| 	autoHTTPSOff := slices.Contains(autoHTTPS, "off") | ||||
|  | ||||
| 	falseBool := false | ||||
|  | ||||
| 	// Load the PKI app configured via global options | ||||
| @ -218,7 +229,8 @@ func (st ServerType) buildPKIApp( | ||||
| 	// if there was no CAs defined in any of the servers, | ||||
| 	// and we were requested to not install trust, then | ||||
| 	// add one for the default/local CA to do so | ||||
| 	if len(pkiApp.CAs) == 0 && skipInstallTrust { | ||||
| 	// only if auto_https is not completely disabled | ||||
| 	if len(pkiApp.CAs) == 0 && skipInstallTrust && !autoHTTPSOff { | ||||
| 		ca := new(caddypki.CA) | ||||
| 		ca.ID = caddypki.DefaultCAID | ||||
| 		ca.InstallTrust = &falseBool | ||||
|  | ||||
| @ -265,6 +265,22 @@ func (app *App) automaticHTTPSPhase1(ctx caddy.Context, repl *caddy.Replacer) er | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// if all servers have auto_https disabled and no domains need certs, | ||||
| 	// skip the rest of the TLS automation setup to avoid creating | ||||
| 	// unnecessary PKI infrastructure and automation policies | ||||
| 	allServersDisabled := true | ||||
| 	for _, srv := range app.Servers { | ||||
| 		if srv.AutoHTTPS == nil || !srv.AutoHTTPS.Disabled { | ||||
| 			allServersDisabled = false | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if allServersDisabled && len(uniqueDomainsForCerts) == 0 { | ||||
| 		logger.Debug("all servers have automatic HTTPS disabled and no domains need certificates, skipping TLS automation setup") | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	// we now have a list of all the unique names for which we need certs | ||||
| 	var internal, tailscale []string | ||||
| uniqueDomainsLoop: | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Pavel
					Pavel