Wireshark を用いて Apache との SSL / TLS 通信を復号する方法を紹介します。Ubuntu 18.04 にて実行してます。
Apache のインストール
1. 「apt install apache2」で Apache をインストールします。
2. 「a2enmod ssl」で SSL / TLS を有効にします。
3. 「ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf」で、デフォルトのサイトで SSL / TLS を有効にします。
4. /etc/apache2/sites-enabled/000-default-ssl.conf を開き「SSLCertificateKeyFile」のパスを確認しておきます。これは、Apache が用意している、デフォルトのサイトが利用している秘密鍵です。デフォルトは「/etc/ssl/private/ssl-cert-snakeoil.key」でした。
5 /etc/apache2/mods-available/ssl.conf の「SSLCipherSuite」に「!DH:!EDH:!ECDH:!ADH:!AECDH」を追加します。
Diffie-Hellman 鍵交換を無効にするためです。
6. 「systemctl restart apache2」で Apache を再起動します。
Wireshark の設定
1. Wireshark を起動します。
2. 「編集」→「設定」を開きます。
3. 「Protocols」→「SSL」→「RSA keys list」の「Edit」をクリックします。
4. 「+」をクリックします。
5. 値を入力し「OK」をクリックします。
IP address | 通信に使用された IP アドレス。Any は、全ての通信を意味します。 |
Port | HTTPS 通信に使用されたポート番号。 |
Protocol | HTTP |
Key File | 秘密鍵へのパス |
Password | 秘密鍵のパスワード。Apache のデフォルトの秘密鍵にはパスワードはありませんでした。 |
6. 「OK」をクリックします。
7. パケットキャプチャーを実行し、「Decrypted SSL」で、復号された結果が確認できます。