Charles Proxy Network Trace on iOS 15.1 Device (iPhone)

Viewed 3065

I have used Charles for a while. I couldn't get it working for the longest time, then I somehow managed to get it working again. Great!

This is for testing iOS apps on iPhone. This is not an emulator, nor is it a website in a browser.

Then I updated my iPhone to iOS 15.1. I wiped my phone and reinstalled everything. Now Charles will not read network traces. Everything that is in my SSL Proxying Includes takes a trace, has a little blue ball next to it, but the trace itself shows as <unknown> with an Error of Input Error: EOF

What I've tried:

  • Adding urls to the "Include" section of "SSL Proxying" and wrapping those includes with a wildcard *
  • Resetting SSL Certificate
  • I have deleted all Certificates and Reinstalled
  • Deleted Charles and Reinstalled
  • I have enabled all certificates once installed by going to Settings > General > About > Certificate Trust Settings and enabled full trust for all root certificates
  • Downloaded Charles desktop application, configured WiFi proxy settings on my iPhone to manual proxy with the IP Address of my computer (on Mac: open Network Settings) and the Port: 8888 (on Charles desktop app: Proxy > Proxy Settings > HTTP Proxy). Then on iPhone go to http://www.charlesproxy.com/getssl in Safari to install certificate (and enable all certificates once installed as I've done above)

I've worked with Charles for a while, and I'm at a loss. I've read other posts in StackOverflow and read the Charles documentation so many times I feel like I know it inside and out. Any other ideas?

3 Answers

One other thing to check - make sure any VPNs you might have on your iOS device are disconnected. Bear in mind, Apple has also added the "Private Relay" feature in iOS 15 - so make sure that isn't enabled in your iCloud settings too.

This has confused me in the past, where I've forgotten to disable an active VPN connection.

I know the Original Poster has stated that "Resetting SSL Certificate" did not work for him. I just want to put out in case it's useful for anyone stumbling across this thread: On my iPhone running iOS 15.3.1, Charles Proxying was failing to show me the requests and responses for all locations for which I had enabled SSL Proxying. What fixed it for me was the following:

  1. In the iPhone device, disable and remove the Charles certificate.
  2. In Charles, hit the "Reset Charles Root Certificate..." option (available via the "Help" -> "SSL Proxying" menu).
  3. In the iPhone device, download the Charles certificate afresh, install it and enable it.

I am assuming in all of the steps above that you have configured your iPhone to use Charles as its HTTP Proxy.

I was able to resolve this by adding more subdomains (and duplicate domains wrapped in wildcards * *) to my included SSL Proxies.

Examples

chat.example.com*

*.example.com*

*chat.example.com*

It's helpful to keep a record of the domains in your SSL Proxy includes because every time you reset your certificate the includes are also reset. I took a screenshot and keep them in a folder now.

Related