2016-05-19 3 views
4

Мой вопрос связан с Apple Transport Security (ATS), и я слишком смущен.Как включить TLS 1.2, 1.1,1.0 и SSL в приложении iOS?

Я хочу поддерживать все протоколы (все версии TLS и SSL) в моем быстром приложении. Если я изменил значение NSAllowsArbitraryLoads на false, будет ли приложение работать по всем протоколам по умолчанию? Или мне нужно указать домен в конфигурации и добавить NSExceptionMinimumTLSVersion?

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <false/> 
    <key>NSExceptionDomains</key> 
<dict> 
    <key>your.servers.domain.here</key> 
    <dict> 
     <key>NSIncludesSubdomains</key> 
     <true/> 
     <key>NSExceptionRequiresForwardSecrecy</key> 
     <false/> 
     <key>NSExceptionMinimumTLSVersion</key> 
     <string>TLSv1.0</string> 
    </dict> 
</dict> 

И как я могу проверить мое приложение обменивается данными с сервером, на каком протоколе?

+0

вы знаете, домен (ы) вы собираетесь подключаться делать? Является ли сервер чем-то пользователем, и вы не можете заранее знать все возможности? Кроме того, как вы подключаетесь к URL-адресам? Используете ли вы UIWebView, WKWebview или NSUrlConnection? Ответ на ваш вопрос зависит от того, как вы планируете подключаться. – wottle

ответ

2

Вы хотите прочитать https://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33

Короче говоря, вам нужно указать NSExceptionMinimumTLSVersion для поддержки TLS1.0 и выше; По умолчанию используется значение 1.2+.

Почему вы пытаетесь поддерживать старые, менее безопасные протоколы?

Я не знаю, как вы можете проверить, какой протокол используется, но если вы можете настроить сервер только на работу, скажем, на TLS 1.0, то ваше приложение будет подключаться только с ключом TLSv1.0 ; и это легко проверить.

+0

Спасибо за ваш ответ. У меня есть требование, в котором я должен поддерживать все протоколы. Я уже это прочитал. Просто нужно знать, как я могу проверить, что мое приложение связывается с сервером по протоколу. Мне нужно быть уверенным в том, что я закодировал, потому что у меня нет доступа к серверу. –

+1

Один из способов проверки того, какой протокол используется определенным URL-адресом, - запустить в терминале OS X следующую полезную утилиту: nscurl --ats-diagnostics --verbose – miranido

0

Подключение Безопасно к URL

Подключение к URL-адресу с помощью TLS тривиальна. Когда вы создаете объект NSURLRequest для предоставления методу initWithRequest: delegate:, укажите https как схему URL вместо http. Соединение автоматически использует TLS без дополнительной настройки.

https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SecureNetworking/SecureNetworking.html

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