HTTP/2 over TLS の通信をダンプする方法
source link: https://gist.github.com/summerwind/a482dd1f8e9887d26199
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK