mTLS通信のイメージを把握したいので、Go言語でクライアントとサーバの簡単なプログラムを作成して下さい
package main
import (
"crypto/tls"
"crypto/x509"
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
// クライアント証明書を検証するためのCA証明書読み込み
caCert, err := os.ReadFile("ca.crt")
if err != nil {
log.Fatal(err)
}
caPool := x509.NewCertPool()
caPool.AppendCertsFromPEM(caCert)
// TLS構成
tlsConfig := &tls.Config{
ClientAuth: tls.RequireAndVerifyClientCert,
ClientCAs: caPool,
MinVersion: tls.VersionTLS12,
}
server := &http.Server{
Addr: ":8443",
TLSConfig: tlsConfig,
}
http.HandleFunc("/secure", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "mTLS通信成功!")
})
log.Println("mTLSサーバ起動中:https://localhost:8443/secure")
err = server.ListenAndServeTLS("server.crt", "server.key")
if err != nil {
log.Fatal(err)
}
}