はじめに
Go言語はシンプルさと効率性を重視して設計されており、その強力な標準ライブラリのおかげで、HTTP/HTTPSサーバーを短時間で立ち上げることができます。
今回は、Goの net/http
パッケージを使って、HTTPSサーバーを作成します。
必要なもの
- Go言語の開発環境
- SSL/TLS証明書と秘密鍵
SSL/TLS証明書は、通信の安全性を保証するためにHTTPS接続で必要となります。証明書は信頼された認証局から購入することも、自己署名証明書を作成することも可能です。今回は、証明書と鍵のファイル名をそれぞれ cert.pem
と key.pem
とします。
コード
以下が、基本的なHTTPSサーバーのコードです。
// mainパッケージを宣言します
package main
// 必要なパッケージをインポートします
import (
"fmt"
"log"
"net/http"
)
// handler関数はHTTPリクエストを処理し、"Hello, HTTPS!"というレスポンスを返します
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, HTTPS!")
}
// main関数はプログラムのエントリーポイントです
func main() {
// ルートパスへの全てのリクエストをhandler関数で処理するよう設定します
http.HandleFunc("/", handler)
// HTTPSサーバーを立ち上げます
// サーバーのポートは443、SSL/TLS証明書のファイル名は "cert.pem"、鍵のファイル名は "key.pem" です
// サーバーの立ち上げに失敗した場合は、エラーメッセージをログ出力します
err := http.ListenAndServeTLS(":443", "cert.pem", "key.pem", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
注意点
このコードを実行するには、適切なSSL/TLS証明書と秘密鍵が必要です。
また、通常、ポート443を開くにはroot権限が必要なため、適切な権限でコードを実行するか、1024以上のポートを使用してください。
まとめ
Go言語を使ってHTTPSサーバーを作成する方法を解説しました。
Goの標準ライブラリを使用すれば、短時間で安全なHTTPSサーバーを立ち上げることが可能です。
この知識を活用して、安全なWebアプリケーションの開発に役立ててください。