Let’s EncryptをGoで使う


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, "<h1>It works!</h1>")
        })
        err := http.ListenAndServeTLS(":80", "/etc/letsencrypt/archive/yourdomain/fullchain1.pem", "/etc/letsencrypt/archive/yourdomain/privkey1.pem", nil)
        if err != nil {
                log.Fatal(err)
        }
}

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です