2015-09-18 2 views
2

Я тестирую приложение в iOS9 и получаю ошибки SSL с загрузкой изображений ATS с amazon.com. Все мои вещи доставляются по https, но у меня все еще есть проблемы.iOS9 NSAppTransportSecurity с s3.amazon.com

Я добавил правильные ключи ATS (работал в другом приложении).

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>amazonaws.com</key> 
     <dict> 
      <key>NSExceptionRequiresForwardSecrecy</key> 
      <false/> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 

Я был на всех форумах, adc и SO, и мне не повезло.

Я пробовал полностью удалить ATS, и я все равно получаю ту же ошибку.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

Ошибка:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802) Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSURLErrorFailingURLPeerTrustErrorKey=, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9802, NSErrorPeerCertificateChainKey={type = immutable, count = 3, values = ( 0 : 1 : 2 : )}, NSUnderlyingError=0x7ffe70e2c690 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSErrorFailingURLStringKey= https://redacted.s3.amazonaws.com/14B78421-84F1-48D1-A8F4-73B688102EE7-21502-00003598C1B6C883_thumbnail.jpg , NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFNetworkCFStreamSSLErrorOriginalValue=-9802, kCFStreamPropertySSLPeerCertificates={type = immutable, count = 3, values = ( 0 : 1 : 2 : )}, _kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., _kCFStreamErrorDomainKey=3, NSErrorFailingURLKey= https://redacted.s3.amazonaws.com/14B78421-84F1-48D1-A8F4-73B688102EE7-21502-00003598C1B6C883_thumbnail.jpg , _kCFStreamErrorCodeKey=-9802}}, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSErrorFailingURLKey= https://redacted.s3.amazonaws.com/14B78421-84F1-48D1-A8F4-73B688102EE7-21502-00003598C1B6C883_thumbnail.jpg , NSErrorFailingURLStringKey= https://redacted.s3.amazonaws.com/14B78421-84F1-48D1-A8F4-73B688102EE7-21502-00003598C1B6C883_thumbnail.jpg , NSErrorClientCertificateStateKey=0}

Статические файлы: AWS Amazon
Ведущий: Heroku
Backend: Джанго
API: Джанго Rest Framework

Я перепробовал все конфигурации я мог найти в ATS, очистить/перезагрузить/перестроить, модифицировать запросы Django (изначально они включали аутентификацию при повторном запуске) и т. д. на этом и заблокирован.

+0

Рассмотрение следующих вопросов: https://developer.apple.com/library/ios/technotes/tn2232/_index.html – warpedspeed

+0

Я также использую SDWebImage для получения изображений. – warpedspeed

+0

Дополнительная информация - на новых изображениях загружена ошибка SSL на устройстве отсутствует, но присутствует на симуляторе (проверка). – warpedspeed

ответ

0

После того, как я заменил подстроку на https-ссылках, я получил сообщения о том, что ATS блокирует их. Я знал, что у меня есть правильные ключи в Info.plist, поэтому я решил, что это должен быть другой Info.plist.

Получается, что в ресурсах был Info.plist, но он ничего не делал. Нам пришлось добавить ключи ATS на вкладку «Информация» на панели «Цель». Не 100% уверены, что разница в этих двух, поскольку я всегда редактировал Info.plist в прошлом.

0

Мне нужно было добавить amazonaws.com в Info.plist, как и вы, и для пользователя SDWebImageAllowInvalidSSLCertificates в качестве опции для метода sd_setImageWithURL: для его работы.