Я потратил бесчисленные часы, пытаясь расшифровать трафик Android SSL через Fiddler для HttpsUrlConnection с очень небольшим успехом. Как я могу надежно настроить Fiddler для дешифрования трафика SSL из приложения Android с помощью HttpsUrlConnection?
Вот мои шаги
- Запустить Fiddler на ПК (с соответствующими настройками: захватить HTTPS Connect, дешифровать трафик HTTPS, разрешить удаленным компьютерам подключаться)
- Настроить беспроводное соединение на Android-устройстве с помощью прокси-сервера через компьютер, запускающий скрипт
- От браузера Android откройте браузер http://[ip из pc running fiddler]: 8888 и загрузите "сертификат FiddlerRoot". Назовите и установите его.
- Откройте https://www.google.com в браузере android и просмотрите дешифрованный трафик в Fiddler на ПК.
Вышеупомянутые работы. Проблема в том, что не-браузерный Android-трафик появляется в Fiddler в качестве туннелей подключения. Мое первоначальное исследование показало, что проблема связана с тем, каким образом сертификаты были доверены через HttpsUrlConnection, поэтому я удостоверился, что доверяю всем сертификатам на основе этой статьи https://secure.mcafee.com/us/resources/white-papers/wp-defeating-ssl-cert-validation.pdf
К сожалению, доверяя всем сертификатам, я не работал с HttpsUrlConnection, поэтому я прекратил расследование. Через несколько дней я решил попробовать еще раз и с удивлением обнаружил, что трафик для скриптинга расшифровывается для HttpsUrlConnection! К сожалению, я не делал никаких дальнейших изменений, чтобы исправить это, поэтому я не совсем уверен, почему он начал работать. Устройство, с которым он работает, - это LG-Optimus L9 для Android версии 4.0.4 и коренится.
Теперь я пытаюсь настроить это для Nexus 7 Android версии 4.2.2 (не укоренился), но, увы, все, что я вижу в скрипаче, это туннели подключения. Поскольку сертификат на обоих устройствах имеет один и тот же серийный номер, и приложение, которое я тестирую, идентично, я в тупике, почему я не могу настроить Fiddler с другим устройством Android.
Подводя итог
- Fiddler может расшифровывать SSL-трафик от LG Optimus, но только показывает туннели подключения от Nexus 7
- Оба устройства работают с тем же приложением, которое использует HttpsUrlConnection для сетевых запросов
- Оба устройства имеют один и тот же фиддлер-сертификат, установленный (соответствие серий), и никакой другой сертификат пользователя не установлен.
- Не думай об этом, но...
- Усовершенствованное устройство (LG Optimus Android 4.0.4) использует прокси-дроид, чтобы указать на ПК, работающий с fiddler
- Не внедренное устройство (Nexus 7 Android 4.2.2), используя встроенную "сеть изменений", чтобы указать на ПК, работающий с fiddler