net/httpでHTTPSサーバーを起動する
最終更新日:2022-05-08
Goのnet/httpでHTTPSサーバーを起動することもできます。
(オレオレ)証明書を作る
opensslコマンドで作ります。ここでは鍵をdebug.key、証明書をdebug.crtにしておきます。
$ openssl genrsa -out debug.key 2048
$ openssl req -new -x509 -sha256 -key debug.key -out debug.crt -days 3650
TLS(SSL)でサーバーを起動する
http.ListenAndServeTLS()で起動します。引数に先ほど作った鍵と証明書を指定します。
package main
import (
"fmt"
"net/http"
)
func MyHandler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("Hello TLS"))
}
func main() {
http.HandleFunc("/", MyHandler)
err := http.ListenAndServeTLS(":10443", "debug.crt", "debug.key", nil)
if err != nil {
fmt.Printf("ERROR : %s", err)
}
}