2015-09-23 17 views
6

Sto riscontrando un problema con il mio Xcode 7 appena installato dove anche dopo aver installato un certificato SSL sui simulatori iOS tramite Charles (Aiuto> SSL Proxying> Installa il certificato Root Charles in Simulatori iOS) e esplicitamente consentendo il dominio del server Sto interrogando in Charles, qualsiasi tentativo di ascoltare sul traffico SSL risulta in una connessione fallita.Come far funzionare Charles con Xcode 7 su connessioni SSL?

Charles segnala il seguente errore:

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 rapporti console:

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."

le cose funzionavano bene in Xcode 6 sotto la stessa messa a punto - Qualcuno ha qualche idea?

risposta

10

ho risolto il problema sulla base di questa discussione: https://forums.developer.apple.com/thread/4988

IOS 9 (che Xcode 7 emulatori entrano) ha requisiti rigorosi per il trasporto SSL - da "Poeti" utente del filo sopra:

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> 

Ciò consente a Charles di mostrare traffico non crittografato quando si utilizzano gli emulatori iOS 9. Probabilmente vorrai disabilitare questa opzione dopo aver distribuito le tue app.

+1

Questa è l'unica soluzione che ho trovato anch'io. È un po 'un problema dover ricordare di rimuoverlo prima di costruire per l'AppStore. –

+1

Questo apre l'HTTP per tutti i domini che è pericoloso. È possibile specificare di consentire solo il proprio server di sviluppo ed è inoltre possibile specificare la versione TLS. Risposta dettagliata è [qui] (http://stackoverflow.com/a/31254874/1051215) –

+0

Grazie. In generale, la mia soluzione per il mantenimento delle app iOS è: quando qualcosa si rompe si applicano consigli "questo è pericoloso" per correggerlo, quindi quando ho il tempo di dick around creare un nuovo progetto con le impostazioni predefinite e inserire il vecchio codice dentro e fare cosa è effettivamente necessario –

Problemi correlati