苹果在使用Open SSL时对其应用程序传输安全性进行了一些更改,但我无法使其在iOS上运行。

“App Transport Security是一项功能,可提高
应用程序和Web服务之间的连接。该功能包括
符合最佳做法的默认连接要求
安全连接。应用程序可以覆盖此默认行为并转向
运输安全。传输安全性在iOS 9.0或更高版本中可用
以及OS X v10.11和更高版本。”

尝试连接到我们的服务器时,出现以下响应错误:

“发生了SSL错误,无法建立与服务器的安全连接。”

然后,我找到了this tutorial,发现我们需要做的就是将IdSSLOpenSSLHeaders_Static单元包括在项目的use语句之一中。

我确实将单元以及libcrypto.alibssl.a.库都添加到了项目中,但到目前为止,我遇到了相同的响应错误。

我可能做错了什么?

最佳答案

要禁用 ATS ,您需要另外从this official embarcadero documentation执行以下步骤:

打开您的 Info.plist 并添加以下行:

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

这将为应用程序使用的所有 HTTP通信禁用Apple的App Transport Security功能,例如,如果您使用TWebBrowser或Project Indy的HTTP组件。

每次完成部署后,您项目的Info.plist文件都是重新生成的。您需要将文件保存到其他位置,例如项目目录。 (请注意,32位和64位版本略有不同)。

在新保存的文件中进行更改,然后转到 Deployment Manager (项目->部署)。确保正确设置了配置,并取消选中默认的Info.plist

添加新的自定义版本和,确保将“远程名称”设置为“Info.plist”(区分大小写)。对64位和32位部署都执行此操作。

08-05 00:18
查看更多