Почему я получаю службу вызова ошибок SSL от Swift на iOS? - PullRequest
0 голосов
/ 31 октября 2018

Я получаю сообщение об ошибке при вызове службы HTTPS из XCode с использованием Swift, и я не понимаю, почему. Я использую URL-адреса HTTPS, и вызовы службы работают нормально, но для работы вызовов службы необходимо, чтобы для параметра «Разрешить произвольные загрузки» было установлено значение «ДА». Если эта настройка не включена, вызовы службы завершаются с ошибкой:

2018-10-31 09: 56: 57.362568 + 0200 APPNAME [1691: 69141] [BoringSSL] boringssl_context_alert_callback_handler (3747) [C1.1: 2] [0x7fcb6171e660] Уровень предупреждения: фатальный, описание: версия протокола 2018-10-31 09: 56: 57.362750 + 0200 APPNAME [1691: 69141] [BoringSSL] boringssl_context_error_print (3699) boringssl ctx 0x600000a87ea0: 140511489945352: ошибка: 100000f0: SSL Подпрограммы: OPENSSL_internal: UNSUPPORTED_PROTOCOL: /BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl_Sim/boringssl-109.202.1/ssl/handshake_client.cc: 569: 2018-10-31 09: 56: 57.363026 + 0200 APPNAME [1691: 69141] [BoringSSL] boringssl_context_get_error_code (3540) [C1.1: 2] [0x7fcb6171e660] SSL_AD_PROTOCOL_VERSION 2018-10-31 09: 56: 57.369545 + 0200 APPNAME [1691: 69141] TIC TCP Conn Failed [1: 0x600003d95c80]: 3: -9836 Ошибка (-9836) 2018-10-31 09: 56: 57.375719 + 0200 APPNAME [1691: 69141] Ошибка загрузки NSURLSession / NSURLConnection HTTP (kCFStreamErrorDomainSSL, -9836) 2018-10-31 09: 56: 57.375903 + 0200 APPNAME [1691: 69141] Задача. <1> Ошибка загрузки HTTP (код ошибки: -1200 [3: -9836]) 2018-10-31 09: 56: 57.376267 + 0200 APPNAME [1691: 69140] Задание. <1> завершено с ошибкой - код: -1200 ошибка вызова GET on / todos / 1 Error Domain = NSURLErrorDomain Code = -1200 «Произошла ошибка SSL, и безопасное соединение с сервером невозможно.» UserInfo = {_ kCFStreamErrorCodeKey = -9836, NSLocalizedRecoverySuggestion = Вы все равно хотите подключиться к серверу ?, NSUnderlyingError = 0x6000006c8030 {Ошибка домена = kCFErrorDomainCFNetwork Code = -1200 "(null)" UserInfo = {_ kCFStreamPropertySSLClientCertificateState = 0, _kCFNetworkCFStreamSSLErrorOriginalValue = -9836, _kCFStreamErrorDomainKey = 3, _kCFStreamErrorCodeKey = -9836}}, NSLocalizedDescription = Произошла ошибка SSL и невозможно установить безопасное соединение с сервером., NSErrorFailingURLKey = https://MYURL, NSErrorFailingURLStringKey = https: / MYURL, _kCFStreamErrorDomainKey = 3}

Я не понимаю, почему я получаю эту ошибку, потому что URL-адреса работают и безопасно подключаются без настройки, так почему я получаю это, когда настройка выключена, и я все еще использую HTTPS?

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 декабря 2018

IOS будет блокировать незащищенные соединения, которые не соответствуют требованиям ATS. Может быть одним из следующих:

  • Версия протокола TLS не 1.2:

ATS использует транспортный уровень Протокол безопасности (TLS) версии 1.2 (RFC 5246).

  • Сильный шифр связи

В соединении должен использоваться симметричный шифр AES-128 или AES-256. Согласованный набор шифров TLS-соединений должен поддерживать идеальную прямую секретность (PFS) посредством обмена ключами Диффи-Хеллмана с эллиптической кривой (ECDHE) и должен быть одним из следующих: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

  • Сильный алгоритм шифрования сертификата:

Сертификат конечного сервера должен быть подписан одним из следующих типов ключей: Ключ Ривеста-Шамира-Адлемана (RSA) длиной не менее 2048 бит Ключ Elliptic-Curve Cryptography (ECC) размером не менее 256 бит Кроме того, алгоритм хэширования сертификата конечного сервера должен быть Secure Hash Algorithm 2 (SHA-2) с длиной дайджеста, иногда называемой «отпечатком», по крайней мере 256 (то есть SHA-256 или выше). Требования, перечисленные в этом разделе, действуют на дату публикации этого документа, и в будущем возможны более строгие требования. Изменения этих требований не нарушат двоичную совместимость приложения.

  • Конечно: HTTPS:

При включенной ATS HTTP-соединения должны использовать HTTPS (RFC 2818). попытки подключиться через небезопасный HTTP-сбой.

https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...