2015-09-23 6 views
6

Ich habe ein Problem mit meinem neu installierten Xcode 7, wo auch nach der Installation eines SSL-Zertifikats auf den iOS-Simulatoren durch Charles (Hilfe> SSL-Proxying> Installation von Charles Root-Zertifikat in iOS-Simulatoren), und explizit die Domäne des Servers Ich frage in Charles, alle Versuche, auf SSL-Verkehr zu hören, führt zu fehlgeschlagener Verbindung.Wie kann Charles mit Xcode 7 bei SSL-Verbindungen arbeiten?

Charles meldet den folgenden Fehler:

SSLHandshake: Remote host closed connection during handshake You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.

Xcode Konsole Berichte:

2015-09-23 11:29:44.173 Citifyd[8352:449043] Error in registration. Error: Error Domain=NSCocoaErrorDomain Code=3010 "REMOTE_NOTIFICATION_SIMULATOR_NOT_SUPPORTED_NSERROR_DESCRIPTION" UserInfo={NSLocalizedDescription=REMOTE_NOTIFICATION_SIMULATOR_NOT_SUPPORTED_NSERROR_DESCRIPTION} 2015-09-23 11:29:44.483 Citifyd[8352:449381] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802) 2015-09-23 11:29:44.509 Citifyd[8352:449043] API ERRROR Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made."

Dinge funktionierte gut in Xcode 6 unter dem gleichen Aufbau - jemand irgendwelche Ideen?

Antwort

10

I löste das Problem auf diesem Thread basierend: https://forums.developer.apple.com/thread/4988

IOS 9 (die die Xcode 7 Emulatoren laufen) strengere Anforderungen für SSL-Verkehr haben - vom Benutzer "Dichter" in dem obigen thread:

iOS 9 forces connections that are using HTTPS to be TLS 1.2 to avoid recent vulnerabilities. In iOS 8 even unencrypted HTTP connections were supported, so that older versions of TLS didn't make any problems either. As a workaround, you can add this code snippet to your Info.plist:

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

Dadurch kann Charles Ihnen bei Verwendung von iOS 9-Emulatoren unverschlüsselten Datenverkehr anzeigen. Wahrscheinlich möchten Sie dies nach der Verteilung Ihrer Apps deaktivieren.

+1

Dies ist die einzige Lösung, die ich auch gefunden habe. Es ist ein bisschen schmerzhaft, daran zu denken, das zu entfernen, bevor Sie für den AppStore bauen. –

+1

Dieser öffnet das HTTP für alle Domänen, was gefährlich ist. Sie können angeben, dass nur Ihr eigener Entwicklungsserver zulässig ist, und Sie können auch die TLS-Version angeben. Detaillierte Antwort ist [hier] (http://stackoverflow.com/a/31254874/1051215) –

+0

Danke. Im Allgemeinen ist meine Lösung für die Pflege von iOS-Apps: Wenn etwas kaputt geht, gilt: "Das ist gefährlich", um es zu reparieren, dann wenn ich Zeit habe, ein neues Projekt mit Standardeinstellungen zu erstellen und den alten Code hineinzubringen und was zu tun wird tatsächlich benötigt –