2015-08-15 2 views
0

Я пытаюсь запустить мое приложение на прошивке 9 - Xcode 7 беты 5. Хотя мои URL-адрес являются HTTPS, NSURL соединение все еще бросает ошибку:Кто-нибудь получил NSURLConnection, работающий на iOS 9 без исключения?

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802) 

Я пытаюсь не использовать исключение, чтобы получить это работает. Мой сервер поддерживает требуемые протоколы: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

Благодаря ...

ОБНОВЛЕНИЕ: release notes показывают, что они прекратили поддержку по умолчанию DHE_RSA шифров:

«шифры DHE_RSA теперь отключены по умолчанию в Secure Транспортировка для клиентов TLS. Это может привести к сбою подключения к серверам TLS, которые поддерживают только комплекты шифрования DHE_RSA. Приложения, которые явно разрешают шифрование с использованием SSLSetEnabledCiphers, не будут затронуты и будут по-прежнему использовать комплекты шифрования DHE_RSA, если они явно включены ».

Это шифры, поддерживаемые моим сервером. Смотрите полный список здесь: https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

Так что я думаю, мне нужно использовать SSLSetEnabledCiphers для каждого NSURLConnection или обновить свой сервер для поддержки шифров DHE_ECDSA. Или используйте механизм исключения на данный момент.

Все, что я пропустил? И кто-нибудь получил образец кода для использования SSLSetEnabledCiphers?

Спасибо.

+0

http://stackoverflow.com/questions/30720813/ cfnetwork-sslhandshake-failed-ios-9 –

+0

Да, у этого есть обходные пути. Я пытаюсь принять протокол TLS и не использовать коды исключений в plist. – Richard

+0

По-прежнему нет хорошего ответа, у меня было приложение для магазина с этим реализовано на прошлой неделе. –

ответ

0

Вот сделка. Безвредный язык о наборах шифров DHE_RSA, которые не поддерживаются по умолчанию, является довольно значительным изменением Apple в бета-версии 5. Многие серверы там не поддерживают шифры ECDHE_ECDSA по умолчанию. Чтобы поддерживать эти шифры на моем сервере, похоже, что мне придется что-то модернизировать или несколько вещей. Или даже перекомпилировать что-то. Ack.

И я предполагал, что мне просто нужно обеспечить, чтобы все URL-адреса были HTTPS!

В частности, мне удалось поддерживать HTTPS-ссылки на моем сервере, используя ключ «NSExceptionRequiresForecSecrecy = NO» в info.plist. Также не забывайте при необходимости «NSIncludesSubdomains = YES».

Полезный фон, особенно если Диффи-Helmen бирже, эллиптическая кривая и вперед Секретность не знакомы вам:

http://blog.ivanristic.com/2013/08/configuring-apache-nginx-and-openssl-for-forward-secrecy.html

http://blog.lowsnr.net/2014/10/26/configuring-apache-2-2-ssltls-for-forward-secrecy/

+0

Дальнейшие исследования, благодаря hynek.me, показывают, что для поддержки шифров ECDHE вам потребуется Apache 2.4 или Apache 2.2.26. Не знаете, насколько распространены эти версии. http://archive.apache.org/dist/httpd/CHANGES_2.2.26 – Richard

+0

Похоже, для них слишком рано это делать, что заставит всех вернуть его, а не обновлять свой сервер ... –

+0

К счастью , У меня хорошая компания: Facebook SDK не поддерживает Forward Secrecy на своих серверах вне ворот: https://developers.facebook.com/docs/ios/ios9 – Richard

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