Skip to content

Instantly share code, notes, and snippets.

@mindscratch
Created January 20, 2014 18:24
Show Gist options
  • Save mindscratch/8525915 to your computer and use it in GitHub Desktop.
Save mindscratch/8525915 to your computer and use it in GitHub Desktop.
TLS enabled HTTP Server in Go
package main
import (
"crypto/tls"
"fmt"
"log"
"net"
"net/http"
)
func handler(w http.ResponseWriter, req *http.Request) {
w.Header().Set("Content-Type", "text/plain")
w.Write([]byte("This an example server.\n")
}
func main() {
http.HandleFunc("/", handler)
server := &http.Server{Addr: ":8000", Handler: nil}
tlsConfig := &tls.Config{}
tlsConfig.ClientAuth = tls.RequireAnyClientCert
tlsConfig.NextProtos = []string{"http/1.1"}
var err error
tlsConfig.Certificates = make([]tls.Certificate, 1)
tlsConfig.Certificates[0], err = tls.LoadX509KeyPair("public_cert.pem", "private_key.key")
if err != nil {
log.Fatal(err)
}
conn, err := net.Listen("tcp", server.Addr)
if err != nil {
log.Fatal(err)
}
tlsListener := tls.NewListener(conn, tlsConfig)
server.Server(tlsListener)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment