我正在处理的应用程序需要通过 https 连接到 Web 服务,该证书是受信任且有效的。
我用过 NSURLConnection 是以前的项目在 http 上使用soap
谁能指出上述两种情况之间的区别,我还需要了解通过 https 连接时到底发生了什么,证书是否自动存储在设备上,ssl 握手是如何发生的。
任何指向这个方向的指针都会非常有帮助。
问候,伊山
我正在处理的应用程序需要通过 https 连接到 Web 服务,该证书是受信任且有效的。
我用过 NSURLConnection 是以前的项目在 http 上使用soap
谁能指出上述两种情况之间的区别,我还需要了解通过 https 连接时到底发生了什么,证书是否自动存储在设备上,ssl 握手是如何发生的。
任何指向这个方向的指针都会非常有帮助。
问候,伊山
如果证书是由 Apple 信任其根的证书颁发机构链颁发的,则无需执行任何操作。iOS 设备将接受证书,只要它在其他方面有效(即未过期、未撤销等)。
如果Apple不信任 CA 链的根,则需要将根的证书下载到手机。这可以通过 iPhone 配置实用程序来完成(我认为)。企业配置方案无疑也支持这一点。
我需要澄清一下。证书是由 Apple 签署以用于通知,还是由 SSL 根证书颁发机构(如 VeriSign)签署?
Apple 签名证书仅用于 WebServer 到 Apple 服务器的通信,如 Apple 推送通知服务。它们不适用于 iOS 设备到 WebServer。
由 SSL 根证书颁发机构签署的 SSL 证书应该可以正常工作。
我认为您正在寻找基于 SSL/TLS 的 HTTP 入门。所以,就这样吧。
HTTP 是一个未加密的通道。请求和响应在纯文本数据流中。HTTPS 是一个加密通道。请求和响应位于使用共享主密钥加密的数据流中。SSL/TLS 的神奇之处在于这个加密通道是如何创建的。
首先,客户端和服务器互相打招呼(在清晰的频道中)。接下来,客户端下载服务器的公共证书(在一个清晰的通道中)。
此时,客户端有一些工作要做。它需要验证证书。它需要知道它理解证书,日期范围是有效的,证书是由受信任的证书颁发机构签名的,并且证书没有被吊销。
现在,客户端知道它可以信任服务器。
接下来,它发送一些用服务器的公钥(在服务器的公共证书中)加密的短消息。这些消息只能通过服务器的私钥解密(只有服务器知道)。这些消息允许客户端和服务器协商主密钥。
最后,客户端和服务器使用新创建的加密通道开始正常的 HTTP 请求和响应。
我希望这就是你要找的。有关更详细的说明,请参见:http ://www.moserware.com/2009/06/first-few-milliseconds-of-https.html