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

win*_*006 10 iphone keychain self-signed ios

基本上我们的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在服务器上使用自签名证书连接到服务器?.希望在这种情况下它能帮助别人.

小智 2

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

如有任何问题,我会尽力提供进一步帮助,但希望这可以帮助您朝正确的方向发展。