====== 05 tcpdump Wireshark ======
tcpdump が出力したファイルをWiresharkで読み込む事ができます。
=== Wiresharkダウンロード ===
[[http://sourceforge.jp/projects/wireshark/]]
===== tcpdumpでWiresharkで読めるように出力 =====
# tcpdump -nne -i eth0 -X -s 0 -w tcpdump.log
出力されたファイルを、Wiresharkで読み込む。
===== WiresharkでSSLを復号 =====
Wiresharkでは、秘密鍵を設定することでSSL通信を復号することが可能です。
[[http://d.hatena.ne.jp/ozuma/20140413/1397397632|ここがすごく詳しく説明してくれてます。]]
- メニューの[Edit]→[Preferences]から、Preferencesウィンドウの[Protocols]→[SSL]
- [RSA keys list]の[Edit]をクリックします。
- [SSL Decrypt]のProfile設定画面となるので、[New]をクリックします。
以下のように入力します。
|項目|入力値|
|IP address|対象のIPアドレス|
|Port|対象のポート番号。普通は443でしょう|
|Protocol|ここはhttpsではなくhttpと記述します|
|Key File|秘密鍵ファイル。クリックするとファイル選択ダイアログが開きます|
|Password|鍵ファイルのパスフレーズ。パスを付けていないならば、空のままにしておく|
==== デバックログでエラー ====
ssl_load_key: can't import pem data: Base64 unexpected header error.
このエラーの場合は、鍵が間違っている。
鍵はPem形式である必要があります。
下記のような(一部XXXにしてあります。)
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCva0tWYJ+9Uk7STht248aoLnm1jIhsrNOy4EcfKy9sghiM83fL
ODPhzi7kT8G6fb0d2DqlXoO+KEOJs1j4QGWe2SVnXqpZMN3gk+0m4zEBqbeu4C9D
D6imsqOYWYz3b89Sl8IE4pgalzWLVeNIWrY6Yt5Jp3Gsq8VukamIYKwbdQIDAQAB
AoGARTh8mRA12JpTGi/SLJ8DNDhqtJZI+0FTpGFWD1mWNCY+E9i7K8j4yCD5ZgSG
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
yte5jl2xHXQyvkLK+EmCNKlVHZNuJn+YAlrdLLtU28SOTXKLAMF4CgVL1DECQDxu
Ah5dEh/vbqc6H/mALB94Z5RZjvSzkqqhfBaFq4ghCzvrV6qxHvYYvMIVKYvCL+zz
vBXKTqHy4NNlF270VBkCQEfaCb3iBHBh/z/DH0o12N0i50u1B7b7B80YBXs7+zPU
SjUCVp+OqpuTSV4jOybpwvp9ske8DVaqcsv9Gh4SEhM=
-----END RSA PRIVATE KEY-----
==== 失敗例: 暗号化が解けずにそのままEncryptedで出ちゃう ====
SSLでApplication Dataが流れているところまでは分かりますが、肝心のデータが暗号化されたままになっています。
Encrypted Application Data: e127673d4e5fb04ce09ebaed1702a6dd8e2eaeeed12852f4..
SSLでは通信を開始する前に鍵交換をするわけですが、一つ一つのリクエスト全てに対して鍵交換をするのはコスト的によろしくありません。
そのため、SSLキャッシュを導入し、いったん作った鍵はしばらく使い回すのが普通です。
セッションの一番はじめからキャプチャしていないと、暗号化された通信を復号することができません。
「ClientKeyExchange」があるかどうかがポイントです。
=== SSLのキャッシュを無効にする場合 ===
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
↓
SSLSessionCache none
==== 失敗例:鍵交換のアルゴリズムが違う ====
Client Key Exchange で Diffie-Hellman と出て、暗号解読できない。
Firefoxは、DH鍵交換を優先して使うようです。
IEは、DH鍵交換を使わないようなので、RSAが選択されるよう。
=== ssl.confに下記を設定すると、DH鍵交換を行わなくする事ができる ===
SSLCipherSuite kRSA