Mobile Devices
Traffic from iOS and Android — physical devices, the iOS Simulator, and Android emulators — can be captured too. Each target has its own wizard under the SSL Certificate menu, which does as much of the work as the platform allows and finishes by opening a test page on the device to confirm that the traffic arrives.
Whatever the target, two things have to end up true:
- The app's root CA is installed on the device in a store the app you are debugging trusts.
- The device's traffic reaches the proxy — either because the device shares the computer's network stack, or because its proxy is pointed at the computer's address and port.
Start the proxy before running a wizard: certificate delivery and the test both go through it.
No root or jailbreak is required, but on Android an unrooted device limits which apps will trust the certificate.
iOS Simulator
Available on macOS, and requires Xcode Command Line Tools plus at least one booted simulator.
The certificate goes into the macOS keychain and from there into every booted simulator; the simulators are then restarted so all processes pick up the new trust settings. A simulator uses the Mac's network stack, so there is no proxy to configure.
If HTTPS requests still stay pending, enable trust by hand on the simulator: Settings → General → About → Certificate Trust Settings.
iOS Device
Available on macOS.
The device's Wi-Fi proxy has to be set first: Settings → Wi-Fi → (i) next to your network → Configure Proxy → Manual, with the computer's address on the local network and the proxy port (7070 by default), authentication off. The certificate is then delivered either by scanning a QR code — the download address only resolves through the proxy, which is why the proxy comes first — or over AirDrop.
On the device, the downloaded configuration profile has to be installed from Settings, and then trusted: Settings → General → About → Certificate Trust Settings.
Disable any VPN on both the Mac and the iOS device before setting the proxy.
To undo it: remove the profile under Settings → General → VPN & Device Management, and remove the manual proxy from the Wi-Fi settings.
Android Emulator
Available on all supported platforms. Requires the Android SDK with ADB and a running emulator.
The certificate is written into the emulator's system trust store, which needs a writable system partition, and the Android global HTTP proxy is pointed at 10.0.2.2 — the emulator's route back to your computer — on the proxy's port. Apps that were already running have to be restarted to pick the proxy up.
Caveats:
- Google Play images are not supported — their system partition is read-only.
- The system certificate does not survive an emulator reboot; install it again afterwards.
- On some systems the installation falls back to a terminal-based installer; on Windows that fallback needs Git Bash (Git for Windows).
The wizard can also clear the proxy and remove the certificate again.
Android Device
Both a cable and a wireless setup are supported: over USB with USB Debugging enabled the proxy and the certificate can be pushed with ADB, while over Wi-Fi the proxy is set by hand and the certificate is downloaded by scanning a QR code.
The manual proxy lives under Settings → Network (or Internet) → your network → Modify → Advanced → Proxy → Manual; the address and port are the computer's. Without Wi-Fi, gnirehtet can share the computer's connection over USB and the proxy is set to the same address and port.
Which store the certificate goes into decides what will trust it:
- System store — possible on a rooted device, via
adb remount, and the device reboots afterwards. Trusted by all apps, including those targeting API 24+. - User store — the only option without root. Chrome and apps targeting API 24+ ignore user CAs unless the app itself permits them, which means repackaging the APK with a network security config that trusts user certificates.
Installing a user certificate always has to be confirmed on the phone: on Android 11 and later from Settings (its search is the fastest route), on Android 10 and earlier through the install dialog that appears on the device.
Platform notes: on Linux ADB may need udev rules for USB access; on Windows you may need the Google USB Driver.
To undo it: remove the manual proxy from the device's Wi-Fi settings, remove the CA from Android's trusted credentials (user or system, wherever it was installed), and restart the device.
If HTTPS still does not decrypt
- The app uses certificate pinning. Add its host to the bypass list (see Settings) so it keeps working, or debug a build that trusts your CA.
- On Android, Chrome relies on its own root store for some checks — verify interception with your own app, not with Chrome.
- The certificate is installed, but trust was never enabled (iOS), or it is in the user store while the app only trusts the system one (Android).
- Still stuck on iOS specifically — see iOS: profile installed, certificate not trusted.
- Still stuck on Android specifically — see Android does not trust the proxy certificate.