Лучший способ проверить соответствие сервера требованиям Apple ATS/TLS 1.2

Поэтому Apple требует TLS 1.2 с передовой секретностью для URL-адресов, начинающихся с iOS 9. Независимо от приложения, какой лучший способ проверить, соответствует ли сервер всем требованиям?

nscurl просто не работает, или я не знаю, как его использовать. Мой вывод просто многократно говорит, что CFNetwork SSLHandshake не удалось, хотя я знаю, что сервер совместим.

TLSTool работает в некоторой степени, но я не могу заставить шифры Forward Secrecy (FS) использоваться.

openssl может указать конкретный шифр для клиентского режима, но версия, которую я имею, не имеет шифров FS. Как обновить openssl?

Какой лучший способ? До сих пор мне приходилось использовать ssllabs.com analyt.html. Какие-либо предложения?

Ответы

Ответ 1

В основном nscurl --ats-diagnostics <url> просто пробует все возможные варианты подключения к серверу и ответы с результатами PASS/FAIL для каждого теста. Вы должны просто найти, какие тесты проходят для вашего сервера, и соответственно настроить конфигурацию ATS.

Вот хорошая статья о ATS и проверке соответствия сервера, она также содержит пример nscurl.

Ответ 2

Все перечисленные здесь методы работают, но требуют ручного труда. Лучший метод, который я нашел, - это тестирование сервера с помощью SSL Labs и сравнение результатов с требованиями Apple. Казалось, что это может быть автоматизировано, поэтому я создал инструмент, который делает именно это: https://apptransport.info

Если вы передадите свой домен в качестве параметра (например, https://apptransport.info/craigslist.com), вы получите следующую информацию:

  1. Независимо от того, является ли ваш сервер совместимым с ATS
  2. Как исправить ваш сервер, если необходимо
  3. Как добавить исключения ATS, если необходимо
  4. Результаты из SSL Labs

Ответ 3

Используя nscurl (доступный в macOS El Capitan и выше), вы можете использовать --ats-tls-version для проверки соответствия требованиям TLS 1.2, например:

nscurl --ats-diagnostics --ats-tls-version TLSv1.2 <url>

Это также будет проверено на Perfect Forward Secrecy. Если вы хотите отключить тестирование для PFS, используйте --ats-disable-pfs.

nscurl --ats-diagnostics --ats-tls-version TLSv1.2 --ats-disable-pfs <url>

Ответ 4

Способ 1:

Если URL-адрес, который вы хотите проверить, общедоступен, вы можете использовать общедоступную службу тестирования SSL, такую как:

Тест SSL-сервера

После ввода URL-раздела в разделе "Моделирование рукопожатия" перечислены "Apple ATS 9/iOS 9" и указывается, был ли TLS 1.2 успешно согласован и какой набор шифрования подключений был использован. Если используемый набор шифров приведен ниже в соответствии с Техническими требованиями ATS, и TLS 1.2 был успешно согласован, тогда сервер правильно настроен для ATS.

Метод 2: (это было упомянуто и другими)

На Mac, работающем под управлением ОС X El Capitan, выполните следующую команду в терминале:

/usr/bin/nscurl --ats-diagnostics https://<url>

После запуска команды найдите раздел рядом с надписью ATS Default Connection. Результат PASS указывает, что сервер правильно настроен для ATS.

Способ 3:

Для URL-адресов, которые не являются общедоступными, используйте Wireshark для мониторинга связи с URL-адресом. Вы можете использовать фильтр Wireshark для отображения только пакетов TLSv1.2 со следующим:

ssl.record.version == 0x0303

Вы увидите пакеты, которые используют протокол TLSv1.2, если сервер настроен для TLS версии 1.2. Если вы видите только клиентский пакет Hello при мониторинге запросов, входящих в URL-адрес, TLSv1.2 не обсуждался между мобильным устройством и URL-адресом.

wireshark_screenshot