域= NSURLErrorDomain代码1202

嗨,我收到以下错误:

错误域= NSURLErrorDomain代码= -1202 \“此服务器的证书无效。您可能正在连接到假装为”server-prod.name-cloud.com“的服务器,这可能会使您的机密信息处于危险之中。 \“UserInfo = {NSErrorFailingURLStringKey = https://server-prod.name-cloud.com/v3/project/session/926B9E6BE31B/,NSLocalizedRecoverySuggestion =你想连接到服务器吗?,_kCFStreamErrorDomainKey = 3,NSErrorFailingURLKey = https ://server-prod.name-cloud.com/v3/project/session/926B9E6BE31B/,_kCFStreamErrorCodeKey = -9843,NSLocalizedDescription =该服务器的证书无效。 您可能正在连接到假装为“server-prod.name-cloud.com”的服务器,这可能会使您的机密信息处于危险之中。}

我阅读所有相关的文档 ,我们在“常见故障”一节中应用所有要求。

更多细节:

  • 仅从德国收到的错误(过去2W来自意大利的4倍除外)
  • 这是不可重现的内部
  • 最终在经过多次重试之后,上传就会丢失
  • 这是在iOS 10.xx和9.xx收到展位
  • 我使用2016-08 SSL安全策略的亚马逊服务器,所以根据苹果应该是好的

在我使用的应用程序中:

<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 

注意 – 在生产中,我总是使用HTTP,所以我离开了NSAllowsArbitraryLoads,因为有些离岸testing者可以把路由切换到HTTP进行debugging。

对于在本地使用服务器的开发者,需要让iOS模拟器信任证书。 按照以下步骤操作:

  1. 通过从钥匙串中导出证书来获取.cer文件。 您需要使用有效格式的证书文件,并且最简单的方法是从钥匙串中导出证书文件。

  2. 将上述.cer文件拖放到模拟器上。 它应该给你一个安装“configuration文件”的提示。 继续并按照说明进行安装。

  3. 对于正在使用最新版本的XCode和iOS模拟器的用户。 你需要做1最后一步。 必须明确告诉模拟器信任根CA. 通过转到“ General -> About -> Certificate Trust Settings -> "Enable Full Trust for Root Certificate" for your particular certificate

希望这可以为一些人节省头痛!