暗号スイート
暗号化アルゴリズムやハッシュ関数、鍵長などの設定の組み合わせ
TLS 1.2まで
「鍵交換」「署名」「暗号化」「ハッシュ」の4種類
危殆化した暗号アルゴリズムも残していた
このため使用可能な暗号アルゴリズムが増え続け、その組み合わせである暗号スイートは100種類を超えた
TLS 1.3で
暗号化とハッシュだけを指定するようになり、鍵交換と署名は省略
code: connecter.go
func handleConnection(conn net.Conn) {
l := log.Default()
defer conn.Close()
tlsConn, ok := conn.(*tls.Conn)
if !ok {
l.Println("これはTLSのコネクションではありません")
}
err := tlsConn.Handshake()
if err != nil {
log.Panicf("TLS ハンドシェイクに失敗: %v", err)
}
log.Printf("TLS ハンドシェイク成功!")
state := tlsConn.ConnectionState()
log.Printf("暗号化方式: %s", tls.CipherSuiteName(state.CipherSuite))
if len(state.PeerCertificates) > 0 {
clientCert := state.PeerCertificates0
log.Printf("クライアント証明書 CN: %s", clientCert.Subject.CommonName)
}
fmt.Fprintln(conn, "Hello from TLS server!")
buf := make([]byte, 1024)
n, err := conn.Read(buf)
if err != nil && err != io.EOF {
log.Printf("受信時にエラー発生: %v", err)
return
}
log.Printf("クライントからのメッセージ: %s", string(buf:n))
}
https://scrapbox.io/files/67b3405e01faa53a9b39f794.png
画像をお借りしています
参照: https://xtech.nikkei.com/atcl/nxt/column/18/02306/121900003/
参考
https://qiita.com/miyuki_samitani/items/f3c1572f426176bce3dd
#暗号