マックによる通信プログラムを作成したい
前回記事からかなりブランクが空いた。最近 MacBookを買ってそれにXcodeを入れて遊んでいる。コードはもちろんSwiftだ。Windowsではネットワークプログラムをいくつか作っていたが、マックででも作ろうかと思い始めて、今猛勉強している。そこでマックにWiresharkを入れてHTTPトラフィックを見ようとしたが、デフォルトの環境ではTLS通信で暗号化されGETもPOSTも内容が見れない仕様だ。そこで簡単なHTTPの見方を説明する。
HTTPトラフィックの暗号化
通常、TLS通信ではパスワードなどをPOSTする時に暗号化されて、相手に送信される。例えば、悪人がトラフィックを盗み見ようとしても暗号化されていては全く解読できない。これが世界的にSSL/TSL通信が主流になった要因だ。
マックでHTTPのやりとりを解読する
マックOS上でWiresharkによる自クライアントとサーバーの監視方法は以下の手順で行うが、Wiresharkとグーグルクロームがインストールされていることが前提となるので、インストールしていない場合はあらかじめマックに入れておく必要がある。
1、Wiresharkを起動し、Wireshark->Preferences->protocols->TLS->(pre)-Master-Secret log filenameに/tmp/tmp-google/.ssl-key.log
をいれOKを押す。
2、ターミナルを開く
3、SSLKEYLOGFILE=/tmp/tmp-google/.ssl-key.log /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/tmp-google
と入力しエンターを押す。
4、Chromeが自動起動するのでそこから対象のサイトを開く。WiresharkのフィルターにHTTPまたはHTTTP2を入れ、HTTPトラフィックが表示されているのを確認する。
その他の方法
HTTPトラフィックを見る上で最も簡単なのはFiddlerというソフトを使うことだが、macOSでは使用できなかった。WindowsでFiddlerを使用し、マックでコードを書くという手間がかかるが、非常に楽な作業になるのは間違いない。その他マックOSに対応したHTTP監視ソフトもあるが、有料となりまた動作も安定しないためお勧め出来ない。