如何从 iOS 上的应用程序安装根 CA 证书并提示用户信任?

Aus*_*tin 7 certificate objective-c ios

我正在使用 NEVPNManager 为我正在运行的 iOS 应用程序创建个人 VPN。现在我正在尝试安装一个可供所有应用程序使用的根 CA 证书。我了解用户需要在 General -> About - Certificate Trust Settings 下信任此证书。我正在尝试尽可能多地自动化这个过程。我发现尝试这样做的两种方法是:

1) 使用网站上托管的根证书的 URL 打开 Safari,iOS 将提示用户将证书安装为配置文件。

2)在应用程序中实用地安装证书。

选项 #1 有效,但在用户安装证书后,他们不会带回应用程序,仍然必须手动进入并信任证书信任设置中的证书。

使用选项 #2,如果使用 SecItemAdd,它只会添加到我的应用程序沙箱的钥匙串中,其他应用程序不可用。如果可用于其他应用程序,我见过的唯一选项是提高它的信任级别,如下所示,但这似乎需要来自 Apple 的一个我无法构建的旧开源库

那么,完成安装根证书并提示用户使其受信任的最佳选择是什么?如果可以通过#2,我有什么想法可以构建然后将该库合并到我的应用程序中吗?如果我只剩下#1,那么为用户简化流程的最佳方法是什么?

iOS 证书信任设置

Leo*_*ica 8

SecTrustSettingsSetTrustSettings和相关符号是私有 API,您的应用程序将在提交时被 Apple 拒绝。即使你设法编译这个开源,它仍然会导出私有符号,你的应用程序将被拒绝。

相反,您应该使用openURL:API 并指向一个 .p12 文件,该文件可以是本地托管的(通过使用应用内 Web 服务器),也可以是远程的。.p12 文件应包含证书链。

这将打开设置应用程序并要求用户安装证书。用户安装后,设备上的所有应用程序都会信任它。

  • @ Roee84 你不直接通过设置应用程序来做。您需要将 .cer 文件托管在某个服务器上,然后对托管 .cer 文件的 url 执行 openURL。这将打开 Safari,然后将打开设置应用程序以将 cer 证书安装为设备上的新配置文件。 (2认同)