5

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

 1 year ago
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.
neoserver,ios ssh client
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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK