From a34f7fd30021cec9f0559a72387d91f83b5e06ba Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Wed, 3 Feb 2021 18:28:13 +0000 Subject: [PATCH] Increase debug level of ACME operations --- node/acme/manager.go | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/node/acme/manager.go b/node/acme/manager.go index d7dcb93c..d4b6eb22 100644 --- a/node/acme/manager.go +++ b/node/acme/manager.go @@ -27,7 +27,7 @@ const ( var ( checkIntervalSeconds = 9600 renewalTimeout = 1800 * time.Second - renewalDays = 7 + renewalDays = 15 ) type Cert struct { @@ -87,10 +87,11 @@ func NewManager(ctx context.Context, cli *clientv3.Client, email, directoryURL s } // Try to fetch the existing certificate from etcd, or - // generate a self-signed one. + // generate a self-signed one. fetchCert can independently + // return a nil certificate or a nil error. cert, rev, err := fetchCert(ctx, cli, certPath) if err != nil { - log.Printf("error fetching certificate: %v", err) + log.Printf("acme: error fetching certificate: %v", err) } if cert == nil { cert, err = makeSelfSignedCert(certNames) @@ -128,15 +129,21 @@ func (m *Manager) setCert(cert *Cert) error { m.cert = cert m.tlsCert = tlsCert m.renewalDeadline = cert.NotAfter().AddDate(0, 0, -renewalDays) + log.Printf("acme: updated certificate (renewal deadline: %s)", m.renewalDeadline.Format(time.Stamp)) m.mx.Unlock() return nil } -func (m *Manager) shouldRenew() bool { +func (m *Manager) shouldRenew() (bool, string) { m.mx.RLock() defer m.mx.RUnlock() - return time.Now().After(m.renewalDeadline) || !listsEqual(m.cert.Names, m.names) + if time.Now().After(m.renewalDeadline) { + return true, fmt.Sprintf("met renewal deadline %s", m.renewalDeadline.Format(time.Stamp)) + } else if !listsEqual(m.cert.Names, m.names) { + return true, fmt.Sprintf("name list changed (actual: %v, desired: %v)", m.cert.Names, m.names) + } + return false, "" } func (m *Manager) renewLoop(ctx context.Context) { @@ -144,12 +151,12 @@ func (m *Manager) renewLoop(ctx context.Context) { time.Sleep(time.Duration(mrand.Intn(300)) * time.Second) for { - if m.shouldRenew() { - log.Printf("attempting to renew SSL certificate...") + if renew, reason := m.shouldRenew(); renew { + log.Printf("acme: attempting to renew SSL certificate: %s", reason) if err := m.renew(ctx); err != nil { - log.Printf("renewal failed: %v", err) + log.Printf("acme: certificate renewal failed: %v", err) } else { - log.Printf("successfully renewed SSL certificate") + log.Printf("acme: successfully renewed SSL certificate") } } @@ -203,12 +210,12 @@ func (m *Manager) watchOnce(ctx context.Context, path string, rev int64) error { } var cert Cert if err := json.Unmarshal(ev.Kv.Value, &cert); err != nil { - log.Printf("error unmarshaling cert: %v", err) + log.Printf("acme: error unmarshaling cert: %v", err) continue } if err := m.setCert(&cert); err != nil { - log.Printf("error reading saved cert: %v", err) + log.Printf("acme: error reading saved cert: %v", err) } } } @@ -223,17 +230,17 @@ func (m *Manager) watch(ctx context.Context, path string, rev int64) { if err == context.Canceled { return } else if err != nil { - log.Printf("watcher error: %s: %v", path, err) + log.Printf("acme: watcher error: %s: %v", path, err) } time.Sleep(watcherErrDelay) cert, newRev, err := fetchCert(ctx, m.cli, path) if err != nil { - log.Printf("fetch error: %s: %v", path, err) + log.Printf("acme: fetch error: %s: %v", path, err) } else if cert != nil { if err := m.setCert(cert); err != nil { - log.Printf("error reading saved cert: %v", err) + log.Printf("acme: error reading saved cert: %v", err) } rev = newRev } -- GitLab