2013-06-30 85 views
9

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

错误域= NSURLErrorDomain代码= -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日更新:

更多相关更新内容。我还尝试使用配置文件在iOS设备上的根CA中添加一个自签名的CA,通过在我的6.0 iPad和iPhone上进行测试,执行Adding Trusted Root Certificate Authorities to iOS,但这样做效果不佳。所以不知道这是否仅适用于监狱设备。最后,我最终允许用户将自签名证书导入到应用程序中。该应用程序将加载此类导入的证书进行证书验证,类似于此In iOS, how to connect to a server using https with self-signed certificate on the server?。希望在这种情况下它可以帮助其他人。

+0

我有同样的问题在我的情况下,“通用名称”的证书是不一样的,我正在做的HTTPS URL的域名....固定的通用名称解决它 –

回答

2

看着你链接到你的第一个教程应该能够使用或者是一些更高级的形式,一旦你已经测试并让它再工作了,你有一个客户做的创建和添加他们自己的证书将覆盖/替换文件localhost.cer“或任何使用的名称方案”所在的apps文件夹中的localhost.cer文件。有很多方法可以做到这一点,但可以告诉应用程序一个链接,证书在线下载并下载,然后替换。

有任何疑问,我会尽力,并进一步帮助,但希望这可以帮助您在正确的方向。

+0

感谢。记住,自签名证书是由客户生成的,但是应用程序需要众所周知的URL来下载证书。所以这意味着客户需要将该证书交给我们在该知名网站上发布。我认为这绝对是解决这个问题的一种方法,但它对于企业部署来说并不是简单的方法。 – windfly2006

+0

今天,当我查看Symantec MDM配置指南(http://www.symantec.com/connect/sites/default/files/SMM%207.1%20Best%20Practices%20Guide%20vs2.pdf)时,还提到了“ 6.5为根CA创建凭证有效负载“中有关将证书导入iOS根证书存储区的信息。所以这意味着它一定在工作,虽然它不适合我。不知道这是否适用于iOS 5,但不适用于iOS 6。 – windfly2006

+0

给你的问题一个投票,希望有人可以更多地看到这一点。 – rezand

相关问题