2015-09-23 27 views
6

Występuje problem z moim nowo zainstalowanym Xcode 7, gdzie nawet po zainstalowaniu certyfikatu SSL na symulatorze iOS przez Charles (Pomoc> SSL Proxying> Zainstaluj Charles Root Certificate w Symulatorach iOS) i jawnie zezwalaj na domenę serwera Pytam w Charles, każda próba nasłuchiwania na ruchu SSL skutkuje nieudanym połączeniem.Jak przekonać Charlesa do pracy z Xcode 7 na połączeniach SSL?

Charles zgłasza następujący błąd:

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 raportów konsoli:

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

miejsca pracował dobrze w Xcode 6 w tej samej konfiguracji - każdy ma jakieś pomysły?

Odpowiedz

10

I rozwiązać problem w oparciu o ten wątek: https://forums.developer.apple.com/thread/4988

iOS 9 (którego Xcode 7 emulatory uruchomić) ma bardziej rygorystyczne wymagania dotyczące transportu SSL - od użytkownika "Poeci" w powyższym wątku:

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> 

Umożliwia to Charlesowi pokazywanie nieszyfrowanego ruchu podczas korzystania z emulatorów iOS 9. Najprawdopodobniej zechcesz to wyłączyć, gdy rozpowszechniasz swoje aplikacje.

+1

To jedyne rozwiązanie, jakie znalazłem. Trochę bólu, który musisz pamiętać, aby usunąć to przed budowaniem dla AppStore. –

+1

Ten otwiera HTTP dla wszystkich domen, które są niebezpieczne. Możesz określić, aby zezwalać tylko na własny serwer programistyczny i możesz również określić wersję TLS. Szczegółową odpowiedzią jest [tutaj] (http://stackoverflow.com/a/31254874/1051215) –

+0

Dzięki. Zasadniczo moim rozwiązaniem do utrzymywania aplikacji na iOS jest: gdy coś się łamie, stosuj się do "tej niebezpiecznej" porady, aby ją naprawić, a kiedy mam czas na chowanie się, stwórz nowy projekt z ustawieniami domyślnymi i przenieś do niego stary kod i zrób co jest rzeczywiście potrzebny –