10

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

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

因此,我通过电子邮件将自签名证书发送到 iOS 设备并导入配置文件,并希望将其用作根 CA 的一部分以进行 https 身份验证。令我惊讶的是,事实并非如此,我仍然遇到同样的错误。我认为 iOS 默认会在钥匙串中使用根 CA 来验证服务器证书,从我读到的内容来看,配置文件中的导入证书也在钥匙串中。所以我不明白为什么我导入的自签名证书不用作根 CA。

在这一点上,我真的不想通过像这样的编码来信任这个自签名证书iOS 使用自签名证书验证 HTTPS在 iOS 中,如何在服务器上使用带有自签名证书的 https 连接到服务器?因为这在客户将我们的服务器安装在他们的网络上并且他们可以创建自己的自签名证书的情况下不起作用。

不知何故,我并没有从搜索中获得太多关于此的信息。任何人都可以在这里阐明一些亮点以及我需要做些什么来调试它?非常感谢。

7月15日更新:

更多关于此的更新。我还尝试使用配置文件将自签名 CA 添加到 iOS 设备上的根 CA,方法是按照将受信任的根证书颁发机构添加到 iOS,从我在 6.0 iPad 和 iPhone 上的测试来看,它也不能正常工作。所以不确定这是否只适用于越狱设备。最后,我最终允许用户将自签名证书导入应用程序。该应用程序将加载此类导入的证书以进行类似于此的证书验证在 iOS 中,如何使用带有自签名证书的 https 连接到服务器?. 希望它会在这种情况下对其他人有所帮助。

4

1 回答 1

2

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

任何问题我都会尝试并进一步提供帮助,但希望这可以帮助您朝着正确的方向前进。

于 2013-07-15T19:39:10.080 回答