О ATS SSL в версии для iOS 9

Мои приложения используют http и пока не обновляются для iOS9. Сегодня я обновился до iOS9 на своем iPad, все мои приложения все еще работают с использованием http. Похоже, что Apple не запускает https в версии для iOS9. Кто-нибудь знает, когда Apple заставит это сделать или Apple не сделает этого? По какой-то причине я не хочу обновлять свои приложения.

3 ответа

Текущие приложения подходят для iOS 9. Требование ATS SSL вступает в силу при разработке приложений для iOS 9.

Из приложения Техника безопасности транспорта

Поведение по умолчанию:
Все соединения, использующие API-интерфейсы NSURLConnection, CFURL или NSURLSession, используют поведение App Transport Security по умолчанию в приложениях, созданных для iOS 9.0 или более поздней версии и OS X 10.11 или более поздней версии. Соединения, которые не соответствуют требованиям, потерпят неудачу.

Ключевая часть: приложения, созданные для iOS 9.0 или новее.

Это требования безопасности транспорта приложения:

  • Сервер должен поддерживать по крайней мере версию 1.2 протокола TLS.
  • Соединительные шифры ограничены теми, которые обеспечивают прямую секретность (см. Список шифров ниже.)
  • Сертификаты должны быть подписаны с использованием алгоритма хеширования подписи SHA256 или более лучшего, либо с ключом RSA 2048 бит или более, либо с ключом Elliptic-Curve (ECC) 256 бит или более.
  • Недействительные сертификаты приводят к серьезному отказу и отсутствию соединения.

ATS включается в приложениях, созданных на Xcode 7, но не на приложениях, созданных с более ранней версией Xcode. Это сделано для предотвращения "взлома" сотен тысяч приложений на iOS 9.

Если вы перестраиваете свое приложение, используя Xcode 7, ATS будет включен для вашего приложения, и вам нужно будет либо изменить свой бэкэнд, чтобы использовать HTTPS, либо добавить исключения в info.plist.

По сути, ATS является "принудительным" для новых / обновленных приложений (или вам необходимо явно частично или полностью отключить его), но не для старых приложений.

iOS 9 заставляет соединения, которые используют HTTPS, быть TLS 1.2, чтобы избежать недавних уязвимостей. В iOS 8 поддерживались даже незашифрованные HTTP-соединения, поэтому старые версии TLS также не создавали проблем. В качестве обходного пути вы можете добавить этот фрагмент кода в свой Info.plist:

<key>NSAppTransportSecurity</key>  
  <dict>  
  <key>NSAllowsArbitraryLoads</key>  
  <true/>  
  </dict>  
Другие вопросы по тегам