summaryrefslogtreecommitdiff
path: root/modules/caddytls/automation.go
diff options
context:
space:
mode:
authorMatthew Holt <mholt@users.noreply.github.com>2022-08-23 22:28:11 -0600
committerMatthew Holt <mholt@users.noreply.github.com>2022-08-23 22:28:15 -0600
commit3aabbc49a2eccc66a20d3223e9fb2925cbbdd0d4 (patch)
treedc7e18effa02d8b8384a0b758918820efce724f0 /modules/caddytls/automation.go
parentbbc923d66b92780a10ba961fcbe7f056bf7ef3b6 (diff)
caddytls: Log error if ask request fails
Errors returned from the DecisionFunc (whether to get a cert on-demand) are used as a signal whether to allow a cert or not; *any* error will forbid cert issuance. We bubble up the error all the way to the caller, but that caller is the Go standard library which might gobble it up. Now we explicitly log connection errors so sysadmins can ensure their ask endpoints are working. Thanks to our sponsor AppCove for reporting this!
Diffstat (limited to 'modules/caddytls/automation.go')
-rw-r--r--modules/caddytls/automation.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/modules/caddytls/automation.go b/modules/caddytls/automation.go
index ee168b4..0a732b8 100644
--- a/modules/caddytls/automation.go
+++ b/modules/caddytls/automation.go
@@ -16,6 +16,7 @@ package caddytls
import (
"encoding/json"
+ "errors"
"fmt"
"net/http"
"time"
@@ -23,6 +24,7 @@ import (
"github.com/caddyserver/caddy/v2"
"github.com/caddyserver/certmagic"
"github.com/mholt/acmez"
+ "go.uber.org/zap"
)
// AutomationConfig governs the automated management of TLS certificates.
@@ -174,6 +176,13 @@ func (ap *AutomationPolicy) Provision(tlsApp *TLS) error {
tlsApp.Automation.OnDemand.Ask != "" {
err := onDemandAskRequest(tlsApp.Automation.OnDemand.Ask, name)
if err != nil {
+ // distinguish true errors from denials, because it's important to log actual errors
+ if !errors.Is(err, errAskDenied) {
+ tlsApp.logger.Error("request to 'ask' endpoint failed",
+ zap.Error(err),
+ zap.String("endpoint", tlsApp.Automation.OnDemand.Ask),
+ zap.String("domain", name))
+ }
return err
}
}