From 45a0d9c150a01793cae43b212607b3fa81c2faba Mon Sep 17 00:00:00 2001 From: Pablu23 Date: Sun, 9 Jun 2024 19:41:49 +0200 Subject: [PATCH] Added automatic tls cert updating --- Makefile | 2 +- internal/server/server.go | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index f2d3d3e..5ae67a2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ run: develop - bin/develop --server --port 8080 --secret test --database db.sqlite --debug --pretty + bin/develop --secret test --server --port 8181 --database db.sqlite --debug --pretty develop: go build -tags Develop -o bin/develop release: diff --git a/internal/server/server.go b/internal/server/server.go index e2db322..5c671fe 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -2,6 +2,7 @@ package server import ( "bytes" + "crypto/tls" _ "embed" "fmt" "io" @@ -107,9 +108,18 @@ func (s *Server) Start() error { } if s.options.Tls.Enabled { - tls := s.options.Tls.Get() - log.Info().Int("Port", s.options.Port).Str("Cert", tls.CertPath).Str("Key", tls.KeyPath).Msg("Starting server") - return server.ListenAndServeTLS(tls.CertPath, tls.KeyPath) + tlsOpts := s.options.Tls.Get() + server.TLSConfig = &tls.Config{ + GetCertificate: func(chi *tls.ClientHelloInfo) (*tls.Certificate, error) { + cert, err := tls.LoadX509KeyPair(tlsOpts.CertPath, tlsOpts.KeyPath) + if err != nil { + return nil, err + } + return &cert, err + }, + } + log.Info().Int("Port", s.options.Port).Str("Cert", tlsOpts.CertPath).Str("Key", tlsOpts.KeyPath).Msg("Starting server") + return server.ListenAndServeTLS("", "") } else { log.Info().Int("Port", s.options.Port).Msg("Starting server") return server.ListenAndServe()