2015-09-23 2 views
6

У меня возникла проблема с моим недавно установленным Xcode 7, где даже после установки SSL-сертификата на тренажеры iOS через Charles (Справка> SSL Proxying> Установить Чарльз Корневой сертификат в iOS-симуляторах) и явно разрешить домен сервера Я спрашиваю в Чарльзе, любые попытки прослушать SSL-трафик приводят к неудачному соединению.Как заставить Чарльза работать с Xcode 7 на соединениях SSL?

Чарльз сообщает следующее сообщение об ошибке:

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 отчеты консоли:

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

Вещи прекрасно работал в Xcode 6 по тем же настройкам - кто-нибудь есть идеи?

ответ

10

Я решил проблему, основываясь на этой теме: https://forums.developer.apple.com/thread/4988

IOS, 9 (который Xcode 7 эмуляторов запуска) имеет более жесткие требования к SSL транспорта - от пользователей «Поэтов» в приведенной выше нити:

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> 

Это позволяет Чарльзу показать вам незашифрованный трафик при использовании эмуляторов iOS 9. Вероятно, вы захотите отключить это, как только будете распространять свои приложения.

+1

Это единственное решение, которое я нашел. Это немного боль, которую нужно помнить, чтобы удалить это перед зданием для AppStore. –

+1

Это открывает HTTP для всех доменов, которые являются опасными. Вы можете указать, чтобы разрешить только собственный сервер разработки, и вы также можете указать версию TLS. Подробный ответ [здесь] (http://stackoverflow.com/a/31254874/1051215) –

+0

Спасибо. В общем, мое решение для поддержки приложений iOS: когда что-то ломается, применяет любой «это опасный» совет для его исправления, тогда, когда у меня есть время поработать, создайте новый проект с настройками по умолчанию и внесите в него старый код и сделайте то, что на самом деле необходимо –

Смежные вопросы