如果服务器具有可信证书,则使用NSURLConnection在IOS上点击该链接需要哪些步骤?

时间:2012-04-24 17:43:23

标签: ios nsurlconnection

我正在处理的应用程序需要通过https连接到Web服务,证书是可信且有效的。

我曾经使用NSURLConnection以前的项目使用soap而不是http

请有人指出上述两种情况之间的区别, 我还需要了解通过https连接时究竟发生了什么,是自动存储在设备上的证书,ssl握手是如何发生的。

这方面的任何指针都会非常有用。

此致 伊森

2 个答案:

答案 0 :(得分:1)

如果证书是由Apple信任其根目录的证书颁发机构链发布的,则无需执行任何操作。 iOS设备将接受证书,只要该证书有效(即未过期,未撤销等)。

如果CA链的根目录 ,则需要将root用户的证书下载到手机中。这可以通过iPhone配置实用程序完成(我认为)。企业配置方案无疑也支持这一点。

答案 1 :(得分:1)

我需要澄清一下。 Apple签署的证书是用于通知还是由SSL根证书颁发机构(如VeriSign)签署?

Apple签名证书仅用于WebServer与Apple推送通知服务之类的Apple Server通信。它们不适用于iOS设备到WebServer。

由SSL根证书颁发机构签名的SSL证书应该可以正常工作。


我认为您正在寻找HTTP over SSL / TLS入门。所以,就在这里。

HTTP是一个未加密的频道。请求和响应位于纯文本数据流中。 HTTPS是加密通道。请求和响应位于使用共享主密钥加密的数据流中。 SSL / TLS的神奇之处在于如何创建此加密通道。

首先,客户端和服务器互相打招呼(在一个明确的通道中)。 接下来,客户端下载服务器的公共证书(在明确的通道中)。

此时,客户端还有一些工作要做。它需要验证证书。它需要知道它了解证书,日期范围有效,证书由受信任的证书颁发机构签名,以及证书尚未被撤销。

现在,客户端知道它可以信任服务器。

接下来,它发送一些使用服务器公钥加密的短消息(位于服务器的公共证书中)。这些消息只能由服务器的私钥解密(只有服务器知道)。这些消息允许客户端和服务器协商主密钥。

最后,客户端和服务器使用新创建的加密通道开始正常的HTTP请求和响应。

我希望这就是你要找的东西。有关更详细的说明,请参阅:http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html