Приложение iOS взаимодействует только с https и Apple Transport Security Impact

Мой вопрос связан с Apple Transport Security (ATS) и влияет на мою конфигурацию. Я в замешательстве относительно того, что произойдет, если я не соблюдаю его.

У меня есть приложение для iOS, которое взаимодействует с сервером и API, который обеспечивает только https соединения, но в то же время у меня есть TLS1.0 с SHA256 и Cipher Suites без включенной прямой секретности в моей конфигурации.

Если я затем перейду к обходу ATS следующим образом:

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

Что меня смущает в документации ATS:

Отключение ATS разрешает подключение независимо от конфигурации HTTP или HTTPS, разрешает подключение к серверам с более низкими версиями TLS и разрешает подключение с использованием наборов шифров, которые не поддерживают прямую секретность (FS).

Означает ли это, что мое приложение и мой сервер будут по-прежнему обмениваться данными через https без побочных эффектов? то есть подключение не будет прервано просто потому, что мой сервер всегда применяет https, но в данный момент не соответствует ATS.

Другими словами, должен ли я немедленно обновить свой сервер для поддержки TLS1.2 с Forward Secrecy и другими требованиями ATS? Предполагая, что я собираюсь обновлять свое приложение с помощью iOS 9 и последней версии XCode.

С другой стороны, я понимаю, что должен внедрить ATS, но время и ресурсы на данный момент ограничены.


person lapadets    schedule 03.02.2016    source источник


Ответы (1)


Вам не нужно сразу обновлять сервер. Вам также не нужно полностью отключать ATS.

Вместо этого вы можете сообщить ATS, что ваш сервер использует TLSv1 и не поддерживает FS, примерно так в вашем info.plist:

<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>
</dict>

nscurl --ats-diagnostics --verbose $YOUR_API_URL поможет вам понять, что вам действительно нужно указать, чтобы поговорить с вашим сервером.

person Gereon    schedule 03.02.2016