如何让Charles在SSL连接上使用Xcode 7?

Dav*_*ole 6 ssl ios xcode7 charles-proxy

我遇到了新安装的Xcode 7的问题,即使在通过Charles在iOS模拟器上安装SSL证书(帮助> SSL代理>在iOS模拟器中安装查尔斯根证书),并明确允许服务器域I'在查询中查询,任何侦听SSL流量的尝试都会导致连接失败.

Charles报告以下错误:

SSLHandshake:握手期间远程主机关闭连接您可能需要配置浏览器或应用程序以信任Charles Root证书.请参阅"帮助"菜单中的"SSL代理".

Xcode控制台报告:

2015-09-23 11:29:44.173 Citifyd [8352:449043]注册时出错.错误:错误域= NSCocoaErrorDomain代码= 3010 "REMOTE_NOTIFICATION_SIMULATOR_NOT_SUPPORTED_NSERROR_DESCRIPTION" 的UserInfo = {NSLocalizedDescription = REMOTE_NOTIFICATION_SIMULATOR_NOT_SUPPORTED_NSERROR_DESCRIPTION} 2015年9月23日11:29:44.483 Citifyd [8352:449381] NSURLSession/NSURLConnection的HTTP加载失败(kCFStreamErrorDomainSSL,-9802)2015-09 -23 11:29:44.509 Citifyd [8352:449043] API ERRROR错误域= NSURLErrorDomain代码= -1200"发生SSL错误,无法建立与服务器的安全连接."

Xcode 6在相同的设置下运行良好 - 任何人都有任何想法?

Dav*_*ole 10

我解决了这个问题:https: //forums.developer.apple.com/thread/4988

iOS 9(Xcode 7模拟器运行)对SSL传输有更严格的要求 - 来自上述线程中的用户"Poets":

iOS 9强制使用HTTPS的连接为TLS 1.2以避免最近的漏洞.在iOS 8中,甚至支持未加密的HTTP连接,因此旧版本的TLS也没有出现任何问题.作为解决方法,您可以将此代码段添加到Info.plist:

<key>NSAppTransportSecurity</key>  
  <dict>  
  <key>NSAllowsArbitraryLoads</key>  
  <true/>  
</dict> 
Run Code Online (Sandbox Code Playgroud)

这使Charles能够在使用iOS 9仿真器时向您显示未加密的流量.分发应用后,您可能希望禁用此功能.