кто-нибудь с iOS 9 beta 1 имел эту проблему?
Я использую стандартную NSURLConnection для подключения к веб-сервису, и как только делается звонок в веб-сервис, я получаю следующую ошибку. Это в настоящее время работает в iOS 8.3
Возможная бета-ошибка? любые идеи или мысли будут великолепны! Я знаю, что это очень рано в разработке iOS 9
Вот полная ошибка:
Не удалось выполнить SSLHandshake в CFNetwork (-9824) Ошибка загрузки HTTP NSURLSession / NSURLConnection (kCFStreamErrorDomainSSL, -9824)
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://mywebserviceurl"]];
NSURLResponse * response = nil;
NSError * error = nil;
NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];
источник
В iOS 10+ строка TLS ДОЛЖНА иметь форму «TLSv1.0». Это не может быть просто «1.0». (Вздох)
Следующая комбинация других ответов работает.
Допустим, вы пытаетесь подключиться к хосту (YOUR_HOST.COM), который имеет только TLS 1.0.
Добавьте их в Info.plist вашего приложения
источник
NSTemporaryExceptionRequiresForwardSecrecy
помогло мне, спасибо!Для получения дополнительной информации Настройка исключений безопасности транспорта приложений в iOS 9 и OSX 10.11
Эта доставка приложения с приложением Transport Security охватывает несколько хороших советов по отладке.
ATS Failure
CFNETWORK_DIAGNOSTICS
nscurl
источник
Если ваш бэкэнд использует безопасное соединение и вы используете NSURLSession
вам необходимо проверить конфигурацию вашего сервера, особенно, чтобы получить версию ATS и сертификат SSL.
Вместо того, чтобы просто разрешить небезопасное соединение путем установки
NSExceptionAllowsInsecureHTTPLoads = YES
, вместо этого вам нужно разрешить пониженную безопасность в случае, если ваш сервер не соответствует минимальному требованию (v1.2) для ATS (или лучше исправить на стороне сервера).Разрешение пониженной безопасности на один сервер
используйте клиент openssl для проверки сертификата и получения конфигурации вашего сервера с помощью клиента openssl:
... найти в конце
Транспортная безопасность приложений (ATS) требует наличия протокола безопасности транспортного уровня (TLS) версии 1.2.
Требования для подключения с использованием ATS:
Обновление: оказывается, что openssl предоставляет только минимальную версию протокола Protocol: TLSv1 links
источник
После двух дней попыток и неудач у меня сработал этот код womble
с одним изменением, согласно этому посту, мы должны прекратить использование подключей, связанных со словарем NSExceptionDomains такого рода Конвенции
И использовать на новой конвенции
вместо.
яблочная документация
мой код
источник
Еще один полезный инструмент - nmap (brew install nmap)
Дает вывод
источник
Эта ошибка появлялась в журналах иногда, когда я использовал глючную / сбойную версию Cordova для iOS. Это ушло, когда я обновил или понизил Cordova iOS.
Сервер, к которому я подключался, использовал TLSv1.2 SSL, поэтому я знал, что это не проблема.
источник
В вашем
.plist
файле проекта добавьте это разрешение:источник
Синтаксис для конфигурации Info.plist
источник
Обновленный ответ (после WWDC 2016):
App Transport Security, или ATS, - это функция, которую Apple представила в iOS 9. Когда ATS включена, она заставляет приложение подключаться к веб-службам через соединение HTTPS, а не через незащищенный HTTP.
Однако разработчики могут отключить ATS и разрешить своим приложениям отправлять данные через HTTP-соединение, как указано в ответах выше. В конце 2016 года Apple сделает ATS обязательной для всех разработчиков, которые надеются представить свои приложения в App Store. ссылка на сайт
источник
На устройстве, которое я тестировал, было установлено неправильное время. Поэтому, когда я пытался получить доступ к странице с сертификатом, который скоро закончится, он будет запрещать доступ, потому что срок действия сертификата истек. Чтобы исправить, установите правильное время на устройстве!
источник