Почему я получаю сообщение об ошибке ssl при вызове службы swift на ios?

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

2018-10-31 09:56:57.362568+0200 APPNAME[1691:69141] [BoringSSL] boringssl_context_alert_callback_handler(3747) [C1.1:2][0x7fcb6171e660] Alert level: fatal, description: protocol version 2018-10-31 09:56:57.362750+0200 APPNAME[1691:69141] [BoringSSL] boringssl_context_error_print(3699) boringssl ctx 0x600000a87ea0: 140511489945352:error:100000f0:SSL routines: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 Err(-9836) 2018-10-31 09:56:57.375719+0200 APPNAME[1691:69141] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9836) 2018-10-31 09:56:57.375903+0200 APPNAME[1691:69141] Task .<1> HTTP load failed (error code: -1200 [3:-9836]) 2018-10-31 09:56:57.376267+0200 APPNAME[1691:69140] Task .<1> finished with error - code: -1200 error calling GET on /todos/1 Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={_kCFStreamErrorCodeKey=-9836, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSUnderlyingError=0x6000006c8030 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9836, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9836}}, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSErrorFailingURLKey=https://MYURL, NSErrorFailingURLStringKey=https:/MYURL, _kCFStreamErrorDomainKey=3}

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

Будем очень благодарны любой помощи.

вы можете указать URL-адрес, который вы пытаетесь загрузить?

MhmdRizk 31.10.2018 11:49

Он размещен локально в нашем домене с доверенным сертификатом: https: / domain: port / token - первый вызов - получить токен. Как я уже сказал, он отлично работает с включенной настройкой, но если ее нет, я получаю указанную выше ошибку.

macmatthew 31.10.2018 11:51

Попробуйте nscurl --atsdiagnostics --verbose YOUR_URL, чтобы узнать, какие параметры, по мнению ATS, вам необходимо установить.

Gereon 24.12.2018 16:16

У меня был такой же _kCFStreamErrorCodeKey=-9836, при подключении к https://www.yahoo.com. Это не имело ничего общего с Apple ATS. Я был в корпоративной сети, которая не разрешала доступ к https://www.yahoo.com через мой симулятор iOS (поскольку симулятор унаследовал все ограничения моей заблокированной машины). Надеюсь, это кому-то поможет.

rustyMagnet 14.01.2020 13:09
0
4
2 135
1

Ответы 1

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

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

ATS employs the Transport Layer Security (TLS) protocol version 1.2 (RFC 5246).

  • Шифр надежной связи

The connection must use either the AES-128 or AES-256 symmetric cipher. The negotiated TLS connection cipher suite must support perfect forward secrecy (PFS) through Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) key exchange, and must be one of the following: 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

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

The leaf server certificate must be signed with one of the following types of keys: Rivest-Shamir-Adleman (RSA) key with a length of at least 2048 bits Elliptic-Curve Cryptography (ECC) key with a size of at least 256 bits In addition, the leaf server certificate hashing algorithm must be Secure Hash Algorithm 2 (SHA-2) with a digest length, sometimes called a “fingerprint,” of at least 256 (that is, SHA-256 or greater). The requirements listed in this section are current as of this document’s publication date, with stricter requirements possible in the future. Changes to these requirements will not break app binary compatibility.

  • Конечно: HTTPS:

With ATS enabled, HTTP connections must use HTTPS (RFC 2818). Attempts to connect using insecure HTTP fail.

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

Эээ, как это вообще можно объяснить? Я, например, запускаю самодостаточный материал, и, например, отпечаток пальца - это sha-1. Значит, ios не может подключиться к этому? Полностью помешанный.

Ted 19.03.2019 12:45

@Ted Для этого вы можете отключить ATS для вашего конкретного хоста stackoverflow.com/questions/30731785/…

EdiZ 28.03.2019 09:19

Другие вопросы по теме