Мобильные устройства
Трафик с iOS и Android — с реальных устройств, из симулятора iOS и из эмуляторов Android — тоже можно перехватывать. Для каждого случая есть свой мастер в меню SSL Сертификат: он делает столько, сколько позволяет платформа, и в конце открывает на устройстве тестовую страницу, чтобы убедиться, что трафик доходит.
Независимо от платформы в итоге должны выполняться два условия:
- Корневой сертификат приложения установлен на устройстве в том хранилище, которому доверяет отлаживаемая программа.
- Трафик устройства попадает в прокси — либо потому что устройство использует сетевой стек компьютера, либо потому что его прокси указывает на адрес и порт компьютера.
Запустите прокси до работы с мастером: и доставка сертификата, и проверка идут через него.
Root и jailbreak не нужны, но на Android без root круг приложений, которые будут доверять сертификату, ограничен.
Симулятор iOS
Доступно на macOS, нужны Xcode Command Line Tools и хотя бы один запущенный симулятор.
Сертификат попадает в связку ключей macOS, а оттуда — в каждый запущенный симулятор; после этого симуляторы перезапускаются, чтобы новые настройки доверия применились во всех процессах. Симулятор использует сетевой стек Mac, поэтому прокси на нём настраивать не нужно.
Если HTTPS-запросы всё равно остаются в ожидании, включите доверие на симуляторе вручную: Настройки → Основные → Об этом устройстве → Доверие сертификатам.
Устройство iOS
Доступно на macOS.
Сначала на устройстве нужно задать прокси Wi-Fi: Настройки → Wi-Fi → (i) рядом с вашей сетью → Настройка прокси → Вручную, адрес компьютера в локальной сети и порт прокси (по умолчанию 7070), аутентификация выключена. Затем сертификат доставляется либо сканированием QR-кода — адрес загрузки существует только внутри прокси, поэтому прокси и идёт первым, — либо через AirDrop.
На устройстве загруженный профиль конфигурации нужно установить из Настроек, а затем сделать доверенным: Настройки → Основные → Об этом устройстве → Доверие сертификатам.
Отключите VPN и на Mac, и на iOS-устройстве перед настройкой прокси.
Чтобы всё отменить: удалите профиль в Настройки → Основные → VPN и управление устройством и уберите ручной прокси в настройках Wi-Fi.
Эмулятор Android
Доступно на всех поддерживаемых платформах. Нужны Android SDK с ADB и запущенный эмулятор.
Сертификат записывается в системное хранилище доверенных сертификатов эмулятора — для этого нужен раздел /system, доступный для записи, — а глобальный HTTP-прокси Android указывается на 10.0.2.2, адрес вашего компьютера со стороны эмулятора, с портом прокси. Уже запущенные приложения нужно перезапустить, чтобы они подхватили прокси.
Особенности:
- Образы Google Play не поддерживаются — их системный раздел доступен только для чтения.
- Системный сертификат не сохраняется после перезагрузки эмулятора — установите его снова.
- На некоторых системах установка выполняется через терминал; на Windows для этого нужен Git Bash (Git for Windows).
Мастер умеет и обратное — очистить прокси и удалить сертификат.
Устройство Android
Поддерживаются оба варианта: по USB с включённой Отладкой по USB прокси и сертификат можно передать через ADB, а по Wi-Fi прокси задаётся вручную, а сертификат скачивается сканированием QR-кода.
Ручной прокси находится в Настройки → Сеть (или Интернет) → ваша сеть → Изменить → Расширенные → Прокси → Вручную; адрес и порт — компьютера. Если Wi-Fi нет, интернет компьютера можно раздать по USB через gnirehtet и указать тот же адрес и порт.
От того, в какое хранилище попадёт сертификат, зависит, кто будет ему доверять:
- Системное хранилище — возможно на устройстве с root, через
adb remount, после чего устройство перезагружается. Доверяют все приложения, включая те, что собраны под API 24+. - Пользовательское хранилище — единственный вариант без root. Chrome и приложения с API 24+ игнорируют такие сертификаты, пока приложение само их не разрешит, а для этого APK нужно перепаковать с конфигурацией, доверяющей пользовательским сертификатам.
Установку пользовательского сертификата всегда нужно подтвердить на телефоне: на Android 11 и новее — из Настроек (быстрее всего через поиск по ним), на Android 10 и старше — в диалоге установки, который появится на устройстве.
Особенности платформ: на Linux для доступа к USB может потребоваться настройка правил udev, на Windows — Google USB Driver.
Чтобы всё отменить: уберите ручной прокси в настройках Wi-Fi, удалите сертификат из доверенных сертификатов Android (из пользовательских или системных — смотря куда он был установлен) и перезагрузите устройство.
Если HTTPS всё ещё не расшифровывается
- Приложение использует certificate pinning. Добавьте его хост в список исключений (см. Настройки), чтобы оно продолжало работать, либо отлаживайте сборку, которая доверяет вашему CA.
- На Android Chrome в ряде проверок опирается на собственное хранилище корневых сертификатов — проверяйте перехват своим приложением, а не Chrome.
- Сертификат установлен, но доверие не включено (iOS) или он лежит в пользовательском хранилище, а приложение доверяет только системному (Android).
- Не получается именно на iOS — см. iOS: профиль установлен, но сертификату нет доверия.
- Не получается именно на Android — см. Android не доверяет сертификату прокси.