iOS симулятор 'Это соединение не является частным' - PullRequest
1 голос
/ 31 марта 2020

Я пытался заставить симулятор iOS хорошо играть с нашими внутренними серверами разработки.

Я установил root CA, перетащив его в симулятор. Он включен по умолчанию, но я все равно включил / выключил его, просто чтобы быть уверенным.

Я подключился через safari и получил ошибку в названии. Подключился через приложение (на самом деле XCTest) и получил:

2020-03-30 11:45:53.001800+0300 xctest[20258:5222958] [] nw_coretls_callback_handshake_message_block_invoke_3 tls_handshake_continue: [-9812]
2020-03-30 11:45:53.001 xctest[20258:5222959] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
2020-03-30 11:45:53.004 xctest[20258:5222951] Error in <file/line>: Optional(Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “<domain>” which could put your confidential information at risk." UserInfo={NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x7fd53fd12480>, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, NSErrorPeerCertificateChainKey=(
    "<cert(0x7fd546009200) s: <domain> i: <CA>>"
), NSUnderlyingError=0x7fd541a157e0 {Error Domain=kCFErrorDomainCFNetwork Code=-1202 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x7fd53fd12480>, _kCFNetworkCFStreamSSLErrorOriginalValue=-9813, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, kCFStreamPropertySSLPeerCertificates=(
    "<cert(0x7fd546009200) s: <domain> i: <CA>>"
)}}, NSLocalizedDescription=The certificate for this server is invalid. You might be connecting to a server that is pretending to be “<domain>” which could put your confidential information at risk., NSErrorFailingURLKey=https://<url>, NSErrorFailingURLStringKey=<url>, NSErrorClientCertificateStateKey=0})

Я подключился с chrome на Ma c, и он работает нормально. Я фактически скопировал CA из цепочки для ключей ma c в симулятор.

Перебрал контрольный список из https://support.apple.com/en-us/HT210176:

  • размер ключа = 4096
  • га sh алгоритм SHA-256 RSA
  • есть имя DNS в SAN (но также и в CN). В нем говорится, что имена CN не являются доверенными, но не говорится, что они не разрешены.
  • В EKU есть значение
  • Это действительно в течение двух лет

Я также сравнил сертификат, представленный в Safari iOS, с сертификатом Chrome Ma c. Выглядит хорошо. Наконец, я установил 10.3 на симуляторе, чтобы исключить некоторые новые ошибки / ограничения.

Работа на Catalina / Xcode 11.4

Буду признателен за помощь в одном из следующих действий:

  1. Фактическое решение
  2. Помогите диагностировать это. Ссылка на более современные требования или инструмент, чтобы увидеть, почему сертификат не работает.
...