如何在iOS应用程序中使用自签名证书

时间:2013-06-30 18:25:02

标签: iphone ios keychain self-signed

基本上我们的iOS应用程序需要与具有自签名证书的服务器进行通信。在我的应用程序中,https使用不受信任的服务器证书失败,这是可以理解的。错误是这样的:

  

错误Domain = NSURLErrorDomain Code = -1202“此服务器的证书无效。您可能正在连接到假装是”我的主机名“的服务器,这可能会使您的机密信息面临风险。

因此,我通过电子邮件将自签名证书发送到iOS设备并导入到配置文件中,并希望它将作为根CA的一部分用于https身份验证。令我惊讶的是,它不是,我仍然得到同样的错误。我认为iOS默认使用钥匙串上的根CA来验证服务器证书,从我读到的,配置文件中导入的证书也是钥匙串。所以我无法理解为什么导入的自签名证书不用作根CA.

此时,我真的不想通过像iOS authenticate HTTPS with self-signed certificateIn iOS, how to connect to a server using https with self-signed certificate on the server?之类的编码来信任这个自签名证书,因为这不适用于他们安装我们的服务器的客户案例在他们的网络上,他们可以创建自己的自签名证书。

不知怎的,我从搜索中得到的信息并不多。任何人都可以在这里发光,我需要做些什么来调试这个?非常感谢。

7月15日更新:

围绕此更多更新。我还尝试使用配置文件通过跟随Adding Trusted Root Certificate Authorities to iOS 将自签名CA添加到iOS设备上的根CA,从我在6.0 iPad和iPhone上测试,它也不起作用。所以不确定这是否仅适用于监狱破坏的设备。最后,我最终允许用户将自签名证书导入应用程序。应用程序将加载此类导入的证书以进行证书验证,类似于此In iOS, how to connect to a server using https with self-signed certificate on the server?。希望在这种情况下它能帮助别人。

1 个答案:

答案 0 :(得分:2)

查看与您链接的第一个教程应该能够使用它或其中一些更高级的形式,一旦您进行了测试并使其正常工作,那么您只需要为客户创建和添加自己的证书将覆盖/替换文件localhost.cer“或您使用的任何名称方案”所在的apps文件夹中的localhost.cer文件。有很多方法可以做到这一点,但可以告诉应用程序一个链接,证书在线下载,一旦下载,然后更换。

如果有任何问题我会尝试并提供更多帮助,但希望这可以帮助您朝着正确的方向前进。