Golang で ACME プロトコルがサポートされてたみたいなので試してみた。
Document のとおりなんだけれど、以下のコードだけで証明書を発行してListenまでしてくれる。
golang.org/x/crypto/acme/autocert
package main
import (
"fmt"
"log"
"net/http"
"golang.org/x/crypto/acme/autocert"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, TLS user! Your config: %+v", r.TLS)
})
log.Fatal(http.Serve(autocert.NewListener("www.example.jp"), mux))
}
autocert.Manager{}
を使えば、もっと細かく制御できるっぽい。