- 環境変数
SSLKEYLOGFILE
に TLS の鍵をダンプするファイルを指定します - ブラウザを起動します
- Wireshark や tshark に環境変数
SSLKEYLOGFILE
に指定したファイルを設定します - ブラウザで HTTP/2 通信をおこないます
- Wireshark や tshark で通信のダンプ内容を確認します
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 上で鍵ファイルを指定する場合は、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