Let's EncryptをGoで使う
📅 2016/01/07
Let's EncryptをGoで使う
Let's EncryptのClientをcloneして証明書の発行を行います。今回はstandaloneかつport443
でclientを起動して証明書を取得します。
yourdomain
の部分は自分のドメインに置き換えてください。
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto certonly --standalone --standalone-supported-challenges tls-sni-01 -d yourdomain
証明書の発行が完了すると/etc/letsencrypt/archive/yourdomain
配下に*.pem
ファイルが生成されます。
Goのnet/http
を使って書くと以下のようになります。
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) {
w.Header().Add("Content-Type", "text/html; charset=UTF-8")
fmt.Fprint(w, "
It works!")
})
err := http.ListenAndServeTLS(":80", "/etc/letsencrypt/archive/yourdomain/fullchain1.pem", "/etc/letsencrypt/archive/yourdomain/privkey1.pem", nil)
if err != nil {
log.Fatal(err)
}
}