Лучший способ проверить соответствие сервера требованиям 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), вы получите следующую информацию:
- Независимо от того, является ли ваш сервер совместимым с ATS
- Как исправить ваш сервер, если необходимо
- Как добавить исключения ATS, если необходимо
- Результаты из 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-адресом.