基本上,我们的iOS应用需要与一个目前拥有自签名证书的服务器进行通信。在我的应用中,https连接失败,并出现了不受信任的服务器证书错误,这是可以理解的。错误信息如下所示:
错误域=NSURLErrorDomain 错误码=-1202 错误描述=此服务器的证书无效。您可能正在连接到一个假冒“主机名”的服务器,这可能会危及您的机密信息。
因此,我通过电子邮件将自签名证书发送到iOS设备并导入到配置文件中,希望它将作为根CA的一部分用于https身份验证。令我惊讶的是,并没有成功,我仍然收到相同的错误。我认为iOS默认使用钥匙串中的根CA来验证服务器证书,而从我所读的内容来看,配置文件中导入的证书也存储在钥匙串中。因此,我无法理解为什么我的自签名证书未被用作根CA。
目前,我不想通过类似iOS authenticate HTTPS with self-signed certificate或In iOS, how to connect to a server using https with self-signed certificate on the server? 这样的编码方式来信任此自签名证书,因为这在客户情况下不起作用,他们将在其网络上安装我们的服务器,并且可以创建自己的自签名证书。
目前我还没有从搜索中获取到有关此问题的详细信息。是否有人能提供一些提示并告诉我需要做什么才能进行调试?非常感谢。
7月15日更新:
错误域=NSURLErrorDomain 错误码=-1202 错误描述=此服务器的证书无效。您可能正在连接到一个假冒“主机名”的服务器,这可能会危及您的机密信息。
因此,我通过电子邮件将自签名证书发送到iOS设备并导入到配置文件中,希望它将作为根CA的一部分用于https身份验证。令我惊讶的是,并没有成功,我仍然收到相同的错误。我认为iOS默认使用钥匙串中的根CA来验证服务器证书,而从我所读的内容来看,配置文件中导入的证书也存储在钥匙串中。因此,我无法理解为什么我的自签名证书未被用作根CA。
目前,我不想通过类似iOS authenticate HTTPS with self-signed certificate或In iOS, how to connect to a server using https with self-signed certificate on the server? 这样的编码方式来信任此自签名证书,因为这在客户情况下不起作用,他们将在其网络上安装我们的服务器,并且可以创建自己的自签名证书。
目前我还没有从搜索中获取到有关此问题的详细信息。是否有人能提供一些提示并告诉我需要做什么才能进行调试?非常感谢。
7月15日更新:
关于此事还有更多更新。我也尝试使用配置文件,根据在iOS中添加可信的根证书颁发机构,将自签名CA添加到iOS设备的根CA中。 根据我的测试,在6.0版的iPad和iPhone上,它也无法正常工作。所以不确定它是否只适用于越狱设备。最终,我允许用户将自签名证书导入应用程序中。 应用程序会加载这样导入的证书以进行类似于在iOS中如何使用服务器上的自签名证书连接到https? 的证书验证。希望这可以帮助其他人解决此问题。