all repos — homestead @ 4999d3f3f11947994f81f128714f4e2096fdd252

Code for my website

require only ACME_CA for TLS in development It makes sense to add the CA root certificate to the system trust store so that user agents don't produce warnings

Alan Pearce
commit

4999d3f3f11947994f81f128714f4e2096fdd252

parent

bcb6b8e4053d8cbfd0034ad43724e463f2d6caaa

2 files changed, 14 insertions(+), 5 deletions(-)

jump to
M internal/server/server.gointernal/server/server.go
@@ -40,6 +40,7 @@ TLSPort int `conf:"default:8443"`
TLS bool `conf:"default:false"` Development bool `conf:"default:false,flag:dev"` + ACMECA string `conf:"env:ACME_CA"` ACMECACert string `conf:"env:ACME_CA_CERT"` Domains string }
M internal/server/tls.gointernal/server/tls.go
@@ -22,17 +22,25 @@ }
func (s *Server) serveTLS() (err error) { if s.runtimeConfig.Development { - ca := s.runtimeConfig.ACMECACert + ca := s.runtimeConfig.ACMECA if ca == "" { - return errors.New("Need ACME_CA_CERT to enable TLS in development") + return errors.New("can't enable tls in development without an ACME_CA") } - cp := x509.NewCertPool() - cp.AppendCertsFromPEM([]byte(ca)) + cp, err := x509.SystemCertPool() + if err != nil { + log.Warn("could not get system certificate pool", "error", err) + cp = x509.NewCertPool() + } + + cacert := s.runtimeConfig.ACMECACert + if cacert != "" { + cp.AppendCertsFromPEM([]byte(cacert)) + } cfg := certmagic.NewDefault() issuer := certmagic.NewACMEIssuer(cfg, certmagic.ACMEIssuer{ - CA: "https://localhost/acme/local/directory", + CA: s.runtimeConfig.ACMECA, TrustedRoots: cp, DisableTLSALPNChallenge: true, AltHTTPPort: s.runtimeConfig.Port,