【发布时间】:2011-03-02 20:30:39
【问题描述】:
我有一个与许多不同站点通信的应用程序,每个站点都有自己的 SSL 证书,由我们自己的内部 CA 签名。这样做可以避免我们为每个站点(数百或数千个)购买 SSL 证书,并且比在每个站点上使用带有共享密钥的通配符证书更安全。因此,基本上使用 CA 证书是唯一的方法。
现在,我有一个 mobileprovision 文件,它将 CA 证书作为配置文件安装在手机上。当我们的 iPhone 应用程序启动时,如果它收到 SSL 证书错误,它会通过 Safari 重定向到此移动配置文件,并且将提示用户安装 CA。
问题是我担心 Apple AppStore 可能会拒绝我的应用程序这样做(此时只是其他开发人员的一些反馈),我想研究其他方法来实现这一点。
基本上,我需要完成的是允许 SSL 连接,该连接将根据嵌入在我的应用程序中的自定义 CA 证书进行验证。这将使 CA 证书仅对我进行的调用有效。我正在使用标准的 NSURLConnection 方法来与服务通信。
这可能吗?有人可以告诉我如何加载 CA(什么形式的 PEM?)并将其添加到我的应用程序的受信任 CA 证书列表中吗?如果那不可能,我还有什么其他选择?仅仅信任所有证书并不是任何选择,我们希望防止中间人攻击,并且只信任我们的 CA 颁发的证书。
谢谢!
【问题讨论】:
标签: iphone macos ssl nsurlconnection