Skip to content →

SSL Proxying with iOS 9

After you've installed the root SSL certificate for your installation of Charles on your iOS device, you will be able to use SSL Proxying with apps. As of Charles 3.11.4 you can now do this with apps compiled and running on iOS 9 with App Transport Security.

Note that some apps implement SSL certificate pinning which means they specifically validate the root certificate, and will not work with Charles.

If you are on iOS 10.3 or later, there is an extra step required to trust Charles's root SSL certificate. Open the Settings.app and navigate to General > About > Certificate Trust Settings, and find the Charles Proxy certificate, and switch it on to enable full trust for it (More information about this change in iOS 10).

In the event that you continue to have difficulties using SSL Proxying with your own apps, you could try disabling ATS. To disable ATS you need to add keys to your app's Info.plist file, as below. See this tech note from Apple for more information.

You must remember to re-enable ATS before you release your app to take advantage of the security that ATS provides.

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>