【问题标题】:iOS 11 simulator problems with private CA私有 CA 的 iOS 11 模拟器问题
【发布时间】:2018-03-24 14:13:30
【问题描述】:

我正在运行 Tomcat 服务器来开发和测试原生 iOS 应用程序。服务器正在提供使用私有 CA 签名的证书。这是 Apple 对测试服务器的建议,而不是使用自签名证书。我已经在 sslshopper.com 测试了证书,它表明该证书有一个 CA 链。模拟器上已经安装了根 CA 证书。

最初,在没有任何 ATS 异常的情况下,我的应用程序为我提供了以下内容:

错误是常见的:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

此错误通常是应用遇到自签名证书时的结果。正如我上面所说,证书不是自签名的。

将异常域添加到应用程序的 plist 后,我​​得到了:

这通常是我们看到的带有无效 CN 的证书。我已验证证书中的 CN 正确。

错误是:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

我在 Apple 文档中找不到错误,最后不得不求助于在头文件中查找它。如下:

errSSLNoRootCert            = -9813,    /* cert chain not verified by root */

由于存在链并且在模拟器上安装了根证书,我不确定这个错误意味着什么。在安装根证书时,我确实注意到它在证书信任设置中启用之前无法使用,但模拟器中该窗格上唯一的实时内容是指向 Apple 开发人员站点的链接。我在 Safari 中访问了我的测试站点,并在确认证书异常后能够访问它。根证书配置文件表明它已通过验证(绿色复选标记)。

感谢任何帮助。

【问题讨论】:

    标签: ios ssl ssl-certificate ios11 xcode9


    【解决方案1】:

    这最终成为 iOS 证书管理器中的一个错误。根证书没有 CN,这是可选的。根中的 CN 不用于验证功能的任何部分。缺少 CN 使证书管理器感到困惑,并且它没有在证书管理面板中显示它。一位 Apple Developer SME 已提交错误报告。

    【讨论】:

      【解决方案2】:

      如果您使用的是内部CA证书/私有证书,您需要浏览内部网络中的链接。任何从外部网络浏览的人都应该在他/她的浏览器上安装根证书和中间证书

      另外,不同的浏览器和操作系统有不同的程序。例如,Chrome 采用操作系统的信任库(EV 证书除外),如 chromium 的 Root CA Policy 所示。

      【讨论】:

      • 感谢您的评论@rodriquesf53。正如我所提到的,这是一个原生 iOS 应用程序。不涉及浏览器。
      • @SteveB,看到应用程序也绑定到服务器上托管的URL,因此您需要确保服务器上安装的证书与URL匹配。
      • 我在“我已验证证书中的 CN 正确”中提到了这一点。 DNS 名称和 CN 相同。
      • 你能确认安装了根证书吗?根证书是自签名证书
      • @rodriquesf53,请看下面的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2014-06-05
      • 1970-01-01
      • 2022-01-20
      • 2016-04-03
      相关资源
      最近更新 更多