一般にブラウザや curl で同様に TLS のダンプをしたい時は、SSLKEYLOGFILE
環境変数に TLS master secrets 情報を書き出すファイルを指定し、Wireshark などの外部アプリケーションにこのファイルを食わせることで capture した暗号化通信データを復号化し、手元で生の HTTP リクエスト情報 (over TLS) を手軽に解析できることが知られています。
KeyLogWriter (crypto/tls)
Go でも同様に crypto/tls
package がサポートしている KeyLogWriter
を使うことで TLS master secrets 情報を書き出すことができます。
参考: https://pkg.go.dev/crypto/tls#example-Config-KeyLogWriter
// 出力先ファイルを指定
w, err := os.OpenFile("tls-secrets.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
client := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
KeyLogWriter: w,
},
},
}
// 以降この client で行われた通信は Wireshark で復号化して解析可能になる
Wireshark で TLS master secrets ファイルを読み込む方法については上記のリンク内でも詳しく説明されているので、そちらを参照ください。