1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Go] KeyLogWriter (crypto/tls) を使って TLS 通信を Wireshark で復号化する

Last updated at Posted at 2021-10-09

一般にブラウザや 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 ファイルを読み込む方法については上記のリンク内でも詳しく説明されているので、そちらを参照ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?