尝试在 Swift 中使用 API 连接时出现 SSL 错误

mar*_*oja 7 ssl xcode ssl-certificate ios swift

有人可以告诉我为什么会出现以下连接错误吗?我可以通过浏览器访问 API URL,但是当我的应用程序尝试建立连接时,会出现错误。是我的网络吗?我的机器上需要某种证书吗?

在此输入图像描述

已完成,但出现错误 [-1200] 错误域=NSURLErrorDomain 代码=-1200“发生 SSL 错误,无法与服务器建立安全连接。”

mar*_*oja 12

我终于按照以下步骤解决了这个问题:

#1. 在iOS模拟器上安装Zscaler Root CA并启用完全信任

A。从我的 MAC 钥匙串导出 Zscaler 根 CA

b. 将导出的证书拖放到 iPhone 模拟器中的 Xcode 版本中(这将启动安装)

C。转至(在模拟器内)常规设置 -> 关于 -> 证书信任设置,并启用对 Zscaler 根 CA 的完全信任。

#2. 在 Xcode 项目中添加 NSAllowsArbitraryLoads

A。将附加密钥添加到项目的 info.plist 配置文件中

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


Ste*_*ich 5

跟踪显示与 openweathermap.org 的连接是通过 ZScaler 安全代理传递的,该代理取代了根 CA,以拦截和分析流量。由于此站点的应用程序不信任此根 CA,因此连接失败。有关更多信息,请参阅公钥固定 (PKP) 和 Zscaler

  • @marika.daboja:再说一遍,“绕过”是没有办法的,但你必须正确处理拦截。这意味着删除 ZScaler 根 CA 的做法完全错误,因为它只会导致更多应用程序和浏览器失败。相反,您可能需要将 ZScaler Root CA 安装到模拟器中 - 请参阅 https://developer.apple.com/library/archive/qa/qa1948/_index.html。再说一遍,我对您的应用程序了解不够,无法了解这是否真的足够。如果您有证书固定,那么这还不够。 (2认同)