41 lines
974 B
Go
Executable File
41 lines
974 B
Go
Executable File
package main
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
func main() {
|
|
as := config()
|
|
httpsServer := &http.Server{
|
|
Addr: fmt.Sprintf(":%d", as.GetInt("p")),
|
|
Handler: New(),
|
|
TLSConfig: &tls.Config{
|
|
MinVersion: tls.VersionTLS12,
|
|
CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256},
|
|
PreferServerCipherSuites: true,
|
|
CipherSuites: []uint16{
|
|
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
|
|
tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
|
|
tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
|
|
tls.TLS_RSA_WITH_AES_256_CBC_SHA,
|
|
},
|
|
},
|
|
TLSNextProto: make(map[string]func(*http.Server, *tls.Conn, http.Handler), 0),
|
|
}
|
|
c := as.GetString("crt")
|
|
k := as.GetString("key")
|
|
log.Printf("listening on %q", httpsServer.Addr)
|
|
if c == "" && k == "" {
|
|
if err := httpsServer.ListenAndServe(); err != nil {
|
|
panic(err)
|
|
}
|
|
} else {
|
|
if err := httpsServer.ListenAndServeTLS(c, k); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|