Things have changed a bit in how Charles provides proxy HTTPS.
Initially, certificate installation options were moved to the help menu.
Help -> SSL Proxying -> Install Charles Root Certificate Help -> SSL Proxying -> Install Charles Root Certificate in iOS Simulators

Secondly, starting with iOS 9, you must provide the NSAppTransportSecurity option in Info.plist , and if you want Charles to work correctly as the man in the middle, you must add:
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/>
as part of your domains, see the full example:
<key>NSExceptionDomains</key> <dict> <key>yourdomain.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict>
The reason is (I think) that Charles at some point communicates in explicit http after acting as a person on an average https server.
The last step is to activate SSL proxying for this domain in Charles (right-click on the domain and select Enable SSL proxying)

apouche Feb 04 '16 at 12:16 2016-02-04 12:16
source share