我正在运行Tomcat服务器来开发和测试一个本地iOS应用程序。服务器正在显示一个用私有CA签名的证书。这是苹果推荐的测试服务器,而不是使用自签名证书。我已经在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 developers站点的链接。我去了Safari的测试站点,在确认证书异常后能够访问它。根证书配置文件表明它已被验证(绿色复选标记)。
任何帮助都是非常感谢的。
发布于 2017-10-21 23:28:09
这最终是iOS证书管理器中的一个bug。根证书没有CN,这是可选的。根中的CN不用于验证函数的任何部分。缺少CN使证书管理器混淆了,并且它没有在证书管理面板中显示它。苹果的一位开发者中小企业提交了一份错误报告。
发布于 2017-10-13 11:06:57
如果使用内部CA证书/私有证书,则需要浏览内部网络中的链接。任何从外部网络浏览的人都应该在浏览器上安装根目录和中间证书。
另外,不同的浏览器和操作系统有不同的过程。例如,Chrome采用操作系统的信任存储(除EV证书外),如铬的根CA策略所示。
https://stackoverflow.com/questions/46713020
复制相似问题