aboutsummaryrefslogtreecommitdiff
path: root/solve_tls.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-29 00:12:26 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-29 00:12:26 +0100
commit3399d5538c0fbaa2a175f194b38113e053f3cfb0 (patch)
tree14780421fb25f36700b33b7303840df4c2350867 /solve_tls.go
parent88f2375435ad536ced2883e407ed46f7f16a578e (diff)
TLS Solver, broken for now
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 {