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

时间:2017-04-17 21:01:23

标签: ios objective-c certificate

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

1)使用网站上托管的根证书的URL打开Safari,iOS将提示用户将证书安装为个人资料。

2)在应用程序中以实用方式安装证书。

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

如果使用SecItemAdd选项#2,它只会添加到我的应用程序的沙箱的钥匙串中,而不能用于其他应用程序。我见过的唯一选择是,如果其他应用可以使用它来增加它的信任级别as shown here,但这似乎需要来自Apple的old open source library我无法访问建立。

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

iOS Certificate Trust Settings

1 个答案:

答案 0 :(得分:4)

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

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

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