Поскольку S3 в настоящее время не полностью соответствует требованиям, согласно в этом сообщении в блоге AWS их официальная рекомендация - исключить S3 из App Transport Security, добавив этот набор ключей в ваш Info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>amazonaws.com</key>
<dict>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>amazonaws.com.cn</key>
<dict>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
ОБНОВЛЕНИЕ 27.10.15: как Пол указывает в комментариях, хотя это официальный ответ AWS, инженера Apple в форумы поддержки говорят, что это действительно ошибка:
Оказалось, что тот факт, что NSExceptionRequiresForwardSecrecy ослабляет требование SHA-2/256, является ошибкой; предполагаемое поведение NSExceptionRequiresForwardSecrecy - это поведение, задокументированное в Техническом примечании по безопасности транспорта приложений, а именно, что он должен просто включать определенные наборы шифрования.
Мы планируем исправить эту ошибку в будущем. Мы планируем исправить это каким-либо совместимым образом, чтобы люди, которые по ошибке использовали NSExceptionRequiresForwardSecrecy для отключения требования SHA-2/256, не сломались. Однако предсказать будущее всегда сложно. Это подводит нас к тому, что вам следует делать прямо сейчас. [Предыдущая версия этого поста давала менее конкретные советы. Следующее - обновление, которое ужесточает ситуацию.] После обсуждения этого с ATS Engineering наши рекомендации:
Если вы используете конкретную службу хостинга, вам следует проконсультироваться со своей службой хостинга, чтобы получить последние рекомендации.
В подобных ситуациях, когда сервер полностью совместим с ATS, за исключением требования подписи сертификата SHA-2/256, мы рекомендуем вам точно задокументировать это состояние с помощью NSExceptionAllowsInsecureHTTPLoads.
Вам следует как можно скорее попытаться сделать ваш сервер полностью совместимым с ATS.
Когда это произойдет, вам следует обновить свое приложение, установив более безопасные настройки ATS.
Я должен подчеркнуть, что NSExceptionAllowsInsecureHTTPLoads на самом деле небезопасен. Это так же безопасно, как и ваше приложение в настоящее время, когда оно работает на iOS 8. Скорее, это означает, что ваше приложение не получает преимуществ от дополнительной безопасности, предоставляемой ATS. Делитесь и наслаждайтесь
Акцент мой. Обратите внимание, что текущий план состоит в том, чтобы исправить ошибку таким образом, чтобы не нарушить поведение людей, которые использовали NSExceptionRequiresForwardSecrecy
для решения этой проблемы, поэтому приведенный выше ответ по-прежнему является жизнеспособным.
person
markquezada
schedule
18.09.2015
NSExceptionRequiresForwardSecrecy
НЕ следует использовать для решения этой проблемы: оказывается, что тот факт, что NSExceptionRequiresForwardSecrecy ослабляет требование SHA-2/256, является ошибкой. Вместо этого используйтеNSExceptionAllowsInsecureHTTPLoads
. - person Pol   schedule 25.10.2015