From cc772fcb1ec00c421ab32c16dedf477b7a4bfb16 Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Wed, 3 Feb 2021 07:41:02 +0000 Subject: [PATCH] Fix an error where we'd constantly try to renew SSL certificates Set the renewal timestamp on the initial certificate load. --- node/acme/manager.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/node/acme/manager.go b/node/acme/manager.go index c04cdee9..d7dcb93c 100644 --- a/node/acme/manager.go +++ b/node/acme/manager.go @@ -80,6 +80,12 @@ func NewManager(ctx context.Context, cli *clientv3.Client, email, directoryURL s // validation tokens on etcd. acmeMgr := NewACME(email, directoryURL, newEtcdKeyStore(cli, keyPath), newEtcdTokenStore(cli)) + m := &Manager{ + ACME: acmeMgr, + names: certNames, + cli: cli, + } + // Try to fetch the existing certificate from etcd, or // generate a self-signed one. cert, rev, err := fetchCert(ctx, cli, certPath) @@ -92,17 +98,9 @@ func NewManager(ctx context.Context, cli *clientv3.Client, email, directoryURL s return nil, fmt.Errorf("failed to create self-signed certificate: %v", err) } } - tlsCert, err := cert.TLSCertificate() - if err != nil { - return nil, err - } - m := &Manager{ - ACME: acmeMgr, - names: certNames, - cli: cli, - cert: cert, - tlsCert: tlsCert, + if err := m.setCert(cert); err != nil { + return nil, err } // Update m.cert using a watcher. @@ -143,13 +141,15 @@ func (m *Manager) shouldRenew() bool { func (m *Manager) renewLoop(ctx context.Context) { // Initial delay to stagger concurrent initialization. - time.Sleep(time.Duration(mrand.Intn(30)) * time.Second) + time.Sleep(time.Duration(mrand.Intn(300)) * time.Second) for { if m.shouldRenew() { log.Printf("attempting to renew SSL certificate...") if err := m.renew(ctx); err != nil { log.Printf("renewal failed: %v", err) + } else { + log.Printf("successfully renewed SSL certificate") } } -- GitLab