2015-09-17 6 views
6

Sto passando da iOS8 a iOS9 e AFNon le chiamate di servizi Web su HTTPS che funzionavano prima non funzionava più. Sto ricevendo error -1200 e error -9824 Il problema è legato all'utilizzo di certificati autofirmati.iOS9 Qual è il modo corretto di aggiornare le chiamate AFNetworking per funzionare con HTTPS (errore -1200, -9824)?

errore di dominio = Codice kCFErrorDomainCFNetwork = -1200 "Errore SSL ha si è verificato e una connessione sicura al server non può essere fatto." UserInfo = {NSErrorFailingURLStringKey = [url server], NSLocalizedRecoverySuggestion = Vuoi connettersi al server comunque ?, _kCFNetworkCFStreamSSLErrorOriginalValue = -9824

Vedo questa domanda relativa: IOS9 SSL error with NSURLSession, con la seguente risposta, tuttavia , la risposta è criptica e in realtà non mi dice come risolvere il problema.

ATS si fida solo del certificato firmato da una CA ben nota, tutti gli altri sono rifiutati. Di conseguenza, l'unica soluzione con un certificato autofirmato consiste nell'impostare un'eccezione con NSExceptionDomains.

Qual è il modo corretto di aggiornare le chiamate AFNetworking per funzionare con HTTPS su iOS9?

In passato ho utilizzato numerosi soluzioni alternative, incluso un modo per rispondere a NSURLAuthenticationChallenge, tuttavia sto cercando qualcosa di più definitivo.

risposta

7

iOS 9 forza le connessioni che utilizzano HTTPS per essere TLS 1.2 per evitare le vulnerabilità recenti. In iOS 8 sono state supportate anche le connessioni HTTP non crittografate, pertanto anche le versioni precedenti di TLS non presentavano alcun problema. Per risolvere il problema, è possibile aggiungere questo frammento di codice al tuo Info.plist:

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

In tal modo si sta disabilitando il Transport Security App. Spero che sia utile.

Ecco una possibile soluzione, (ma ancora non funziona nel caso di cui sopra) How can I add NSAppTransportSecurity to my info.plist file?

-1

Permettendo non validi i certificati SSL

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.securityPolicy.allowInvalidCertificates = YES; // not recommended for production 
+0

Non sono sicuro che questo funziona, come ATS rifiuta ancora la richiesta/risposta. – lostintranslation

Problemi correlati