WireSharkでHTTP/2をパケットキャプチャする
WireSharkをインストールし、ブラウザでHTTP2でアクセスしている最中にWireSharkでパケットキャプチャしてみた。しかし、WireSharkのフィルタに "http2" と入力しても何も表示されない。そうだった! HTTP2は、TLSの上に実装されているんだった! 暗号化されているため、中身がHTTP/2なのかさえWireSharkにはわからない。WireSharkのフィルタに、"tls" と入力すると、今度は何やら通信データが表示された。多分これを復号するとHTTP2が出てくるのだろう。
調べると、FirefoxやChromeは、SSLで暗号化する際に生成した鍵情報を、SSLKEYLOGFILE環境変数で指定したファイルに出力する機能がある模様。この鍵情報をWireSharkに読ませることで復号後のパケット解析結果を表示してくれるそうだ。やってみよう。
(1)環境変数「SSLKEYLOGFILE」に、鍵情報を出力するファイル名の絶対パスを設定する。例) F:\SSLKEYLOGFILE\ssl.log
(2)WireSharkを起動。上部のメニューから[編集]-[設定]をクリックし設定画面を起動。
(3)設定画面で、左のツリービューから "protocols" - "TLS" を選択する("TLS"が無ければ"SSL"を選択)。
(4)(pre)-Master-Secret log filename に上記のssl.logフアイル名を絶対パスで指定してOKボタンをクリックする。
(5)WireSharkでキャプチャを開始し、フィルタ名に "http2" を入力する。
(6)Firefoxを起動し、HTTP/2に対応したhttpsのページをアクセスする。
今度は、ちゃんと復号化されて、HTTP2のデータが表示されている!
---------------------------------------
■ITとことんのトップページ
┗■HTTP/HTTPSのトップページ
┗■本ページ