领域=NSURLErrorDomain 代码1202

24

您好,我收到以下错误:

Error Domain=NSURLErrorDomain Code=-1202 \"该服务器的证书无效。您可能正在连接到一个假冒“server-prod.name-cloud.com”名称的服务器,这可能会危及您的机密信息。\" UserInfo={NSErrorFailingURLStringKey=https://server-prod.name-cloud.com /v3/project/session/926B9E6BE31B/, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, NSErrorFailingURLKey=https://server-prod.name-cloud.com /v3/project/session/926B9E6BE31B/, _kCFStreamErrorCodeKey=-9843, NSLocalizedDescription=该服务器的证书无效。您可能正在连接到一个假冒“server-prod.name-cloud.com”名称的服务器,这可能会危及您的机密信息。}

我已阅读所有相关文档,并应用了“常见失败”部分中的所有要求。

更多细节:

  • 只有从德国接收到错误(除过去2周中4次来自意大利)
  • 在内部无法重现错误
  • 最终,在大量重试后,上传才会成功
  • 此问题出现在iOS 10.x.x和9.x.x中
  • 我使用2016-08 SSL安全策略的亚马逊服务器,因此根据苹果公司的说法,应该是可以的。

在应用程序中,我使用:

<key>NSAppTransportSecurity</key>
   <dict>
      <key>NSAllowsArbitraryLoads</key>
   <true/>
</dict>
注意 - 在生产中我总是使用HTTP,我保留NSAllowsArbitraryLoads是因为一些离岸测试人员可以将路由切换到HTTP进行调试。

1
你可以阅读这篇文章:http://lithium3141.com/blog/2015/08/21/shipping-an-app-with-app-transport-security/,它与应用程序传输安全性有关。 - SG iOS Developer
3个回答

44

对于那些正在本地服务器上工作并需要让iOS模拟器信任证书的开发人员,请按照以下步骤操作:

  1. 从Keychain导出证书,获取 .cer 文件。你需要一个有效格式的证书文件,最简单的方法是从Keychain中导出它。

  2. 将上述提到的 .cer 文件拖放到模拟器上。它应该会提示您安装“配置文件”。请继续按照说明进行安装。

  3. 对于那些使用最新版本的Xcode和iOS模拟器的人,还需要执行最后一步。必须明确告诉模拟器信任根CA。通过进入 常规->关于本机->证书信任设置->“为特定证书启用完全信任的根证书” 来完成此操作。

希望这些指南能够帮助到一些人!


5
我的模拟器运行的是 iOS 10.3,但是“启用根证书的完全信任”选项不可用。 - Jesus Rodriguez
2
在我的情况下,“启用根证书的完全信任”选项仅适用于根证书。它不适用于中间或叶子证书。 - John Girata
它对我起作用了,将代理服务器的自签名证书添加到模拟器中,在设置中安装并启用完全信任。 - Milan Manwar
但是在生产环境中会发生什么呢?而且 App Review 流程不会拒绝它吗? - Andy Nadal
@AndyNadal,这仅用于本地工作。要求最终用户手动添加未知根CA以便使用您的生产应用程序是不好的做法。相反,您应确保您的证书由现有受信任的CA签名。 - Gautham C.
显示剩余3条评论

1

如果您使用的是带有任何安全措施的工作笔记本电脑,则终端保护可能会检查/中间人攻击SSL证书。

尝试在移动Safari中打开任何网页。我在那里遇到了与iOS模拟器中从Xcode进行的https API请求相同的NSURLErrorDomain Code=-1202错误。

解决方案是关闭此安全功能...

或安装证书:https://developer.apple.com/library/archive/qa/qa1948/_index.html

类似问题在这里提出:iOS Simulator not works on https, all https are evaluated as not trusted

enter image description here enter image description here


-2

我花了很多时间才找到解决方法:

如果我们中的任何人遇到证书问题, 这是因为防病毒软件阻止iPhone模拟器浏览任何网站。我通过以下步骤解决了这个问题:

  1. 卸载或关闭Mac上的防病毒软件。
  2. 擦除模拟器的所有内容和设置。
  3. 重新启动Mac。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接