[Fiddler]Androidの通信解析

1 min読了の目安(約1300字TECH技術記事

FiddlerによってAndroidの通信解析を行います。

とはいうものの、Fiddlerによる解析の方法はインターネットを調べればいくらでも出るので、ここでは解説しません。
ではここでは何を説明するのかというと、FiddlerのCertificateの入れ方です。

FiddlerのCA証明書をAndroidに入れてさあ通信解析、というときに
Tunnel to
とばかり出て通信の中身を見ることができなかった、という問題の解決策を解説します。
少しググりましたが、答えの書いているサイトが見つからなかったため、こちらに残しておきます。

この問題はなぜ起きるのか

Android7以降の端末を使用するときに発生します。

Android7から、Googleはネットワークのセキュリティポリシーを変更し、ユーザーによってインストールされたCA証明書はTLS/SSL接続の際に信用されなくなりました。こちらに詳細が書かれています
この仕様変更に伴い、Fidderで通信を見ようとした際にhttp://ipv4.fiddler:8888/からインストールした証明書では信頼されないためTunnel toと表示されるだけで中身を見ることができなくなってしまいました。

解決策

この問題の解決方法は簡単で、ユーザー証明書から、システム証明書にアップグレードすればよいのです。
なお、Root化は必須です。

方法

1. subject_hashを取得

openssl x509 -subject_hash_old -in FiddlerRoot.crt -inform DER
>>> 9953fb
>>> -----BEGIN CERTIFICATE-----
>>> MIIDsjCCA~~~~
>>> -----END CERTIFICATE-----

この9953fbがsubject_hashになります。

2.PEMフォーマットに変換

openssl x509 -inform DER -in FiddlerRoot.crt -outform PEM > 9953fb.0

こうしてできた9953fb.0というファイルが証明書です。

3.AndroidにCA証明書を追加

adb shellを立ち上げます。

su
mount -o rw,remount /system
cp -f 9953fb.0のあるディレクトリ名/9953fb.0 /system/etc/security/cacerts
chmod 755 /system/etc/security/cacerts/9953fb.0

以上でCA証明書の導入は終了です。
おそらくこれでFiddlerを用いてAndroidの通信を見ることができるようになります。

楽しい解析ライフを!