aboutsummaryrefslogtreecommitdiff
path: root/solve_tls.go
diff options
context:
space:
mode:
Diffstat (limited to 'solve_tls.go')
-rw-r--r--solve_tls.go17
1 files changed, 11 insertions, 6 deletions
diff --git a/solve_tls.go b/solve_tls.go
index 6062948..6b8869e 100644
--- a/solve_tls.go
+++ b/solve_tls.go
@@ -25,7 +25,7 @@ func NewTLSSolver(addr string) Solver {
Addr: addr,
TLSConfig: &tls.Config{},
}
- go s.ListenAndServe()
+ go ListenAndServeSNI(&s.Server)
return s
}
@@ -77,15 +77,17 @@ func (s *tlsSolver) Solve(_, keyAuth string) error {
if err != nil {
return err
}
- log.Println(crt)
- return errNotImplemented
+ s.TLSConfig.Certificates = append(s.TLSConfig.Certificates, crt)
+ s.TLSConfig.BuildNameToCertificate()
+ log.Printf(">>> %+v\n", s.TLSConfig.NameToCertificate)
+ return nil
}
func (s *tlsSolver) Solved() error {
return nil
}
-func ListenAndServeSNI(srv *http.Server, certs []tls.Certificate) error {
+func ListenAndServeSNI(srv *http.Server) error {
addr := srv.Addr
if addr == "" {
addr = ":https"
@@ -97,9 +99,12 @@ func ListenAndServeSNI(srv *http.Server, certs []tls.Certificate) error {
if config.NextProtos == nil {
config.NextProtos = []string{"http/1.1"}
}
- if config.Certificates == nil {
- config.Certificates = certs
+ // we need at least one cert
+ dummy, err := newCert(sniName(""))
+ if err != nil {
+ return err
}
+ config.Certificates = []tls.Certificate{dummy}
config.BuildNameToCertificate()
conn, err := net.Listen("tcp", addr)
if err != nil {