Create a gist now

Instantly share code, notes, and snippets.

Wireshark で HTTP/2 over TLS の通信をダンプする方法

HTTP/2 over TLS の通信をダンプする方法

全体の流れ

  • 環境変数 SSLKEYLOGFILE に TLS の鍵をダンプするファイルを指定します
  • ブラウザを起動します
  • Wireshark や tshark に環境変数 SSLKEYLOGFILE に指定したファイルを設定します
  • ブラウザで HTTP/2 通信をおこないます
  • Wireshark や tshark で通信のダンプ内容を確認します

環境変数 SSLKEYLOGFILE

SSLKEYLOGFILE はブラウザが TLS 通信時に使用した鍵情報のダンプ先となるファイルパスを指定するための環境変数です。
Chrome および Firefox が対応しています。詳細は以下の MDN のページに記載があります。

Mac で環境変数とともにブラウザを起動する場合は以下のようになります。

Chrome

SSLKEYLOGFILE=~/Desktop/tls_key.log "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

Firefox

SSLKEYLOGFILE=~/Desktop/tls_key.log "/Applications/Firefox.app/Contents/MacOS/firefox-bin"

Wireshark での鍵情報の指定

ブラウザが鍵情報をファイルに出力してくれていること確認できたら、次にそのファイルを Wireshark に読み込ませます。

Wireshark 上で鍵ファイルを指定する場合は、Preferences > Protocols > SSL と管理画面を開いていき、(Pre)-Master-Secret log filename に先ほどの SSLKEYLOGFILE で指定したファイルを設定してください。同じ画面に SSL debug file という設定項目がありますが、こちらに任意のパスを指定しておくと、TLS 通信をダンプする際の Wireshark のログが出力されるため、デバッグに便利です。

tshark を使う場合は、以下のようにコマンドを起動すると HTTP/2 のフレームがダンプできるはずです。

tshark -o "http2.heuristic_http2: TRUE" \
       -o "ssl.desegment_ssl_records: TRUE" \
       -o "ssl.desegment_ssl_application_data: TRUE" \
       -o "ssl.keylog_file:/path/to/tls_key.log" \
       -o "ssl.debug_file:/Users/moto/Desktop/debug.log" \
       -Y http2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment