ios - iOS 模拟器“此连接不是私有的”
问题描述
我一直试图让 iOS 模拟器与我们的内部开发服务器配合得很好。
我已经通过将根 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})
我已经从 Mac 上的 chrome 连接,它工作正常。我实际上将CA从mac的钥匙串复制到了模拟器。
从https://support.apple.com/en-us/HT210176查看清单:
- 密钥大小 = 4096
- 哈希算法是 SHA-256 RSA
- SAN 中有一个 DNS 名称(但 CN 中也有)。它说 CN 名称不受信任,但并没有说它们是不允许的。
- EKU 是有价值的
- 有效期为两年
我还将 Safari iOS 中提供的证书与 Chrome Mac 中的证书进行了比较。看起来不错。最后,我在模拟器上安装了 10.3,只是为了排除一些新的错误/限制。
在 Catalina/Xcode 11.4 上运行
我将不胜感激以下任一方面的帮助:
- 一个实际的解决方案
- 帮助诊断。指向更多最新要求的链接或用于查看证书失败原因的工具。
解决方案
推荐阅读
- javascript - 如何使用 JavaScript 触发 Canvas 中按钮的单击事件?
- node.js - 从 NodeJS 中另一个 mongoDB 查询的结果中排除 mongoDB 查询中的值
- python - postgres SQL Python 熊猫
- angular - 使用 es5 中的扩展的 ng-bootstrap datepicker 自定义日期适配器
- excel - 为什么 INDIRECT() 不适用于具有工作表范围的动态命名范围?
- performance - BQ中的嵌套vs连接
- javascript - 如何在不每次都创建新会话的情况下一个接一个地执行appium测试脚本?
- ruby-on-rails - 将 end_time 值设置为与 rails 表单中的 start_time 值相同
- java - Android Studio - 与预览版和模拟器相比,物理设备上的布局元素大小不同
- javascript - 如何在 Vue3 中使用 GoogleChart