2013-04-27 125 views
0

我们知道,https与http通过加密通过http隧道的内容不同,简单地说。如何处理https的iOS客户端

对于Web浏览器,由于用户从弹出的更改对话框接受许可,浏览器将从已安装的证书中获取密钥并执行此项工作。

对于iOS客户端开发,如何处理数字证书,获取公钥并通过公钥加密内容?谢谢,

(顺便说一句,AFnetworking是iOS开发者来处理HTTP的东西著名的开源项目,但好像它不处理HTTPS(纠正我,如果错了))

+0

(1)HTTPS不加密“通过HTTP隧道的内容”。它是运行在以前安全通道上的HTTP - 与您可能想象的相反。 (2)你打算重新实施SSL/TLS吗?如果不是,那么使用HTTPS的某些类并且不要重新发明轮子。 – 2013-04-27 07:30:32

回答

0

这是已经为你完成了。

AFnetworking,它构建的基础iOS网络库,NSURLConnection和几乎每个联网库(例如ASIHTTP等)都透明地为您处理https协议。

实际上,第一行on the front page of the AFNetworking github page是HTTPS例如:

NSURL *url = [NSURL URLWithString:@"https://alpha-api.app.net/stream/0/posts/stream/global"]; 
+0

谢谢,好像已经完成了。有一个处理证书的宏_AFNETWORKING_PIN_SSL_CERTIFICATES_。还有一件事让我困惑,对于浏览器来说,会有一些弹出对话框告诉用户是否信任这个证书,并且访问该网站可能会有一些风险。对于iOS,如何处理这种情况? – Forrest 2013-04-28 02:45:03

+1

只有当您的应用程序连接到您拥有CA证书的*知名*服务器时,您才会使用SSL证书锁定。您应该在应用程序中部署相应的证书 - 可能在捆绑中。因此,无需询问用户是否可以信任此证书 - 您(开发人员)已将其完成。顺便说一句,向用户询问它是否信任证书永远不是一个好主意 - 即使该网站的URL为“attacker.com”,她也会选择任何可用于连接任何内容的证书。 – CouchDeveloper 2013-04-28 15:25:53

+0

有关宏AFNETWORKING_PIN_SSL_CERTIFICATES的一句话。你应该在论坛上提出这个问题:如果标志被定义 - 处理“主机名称验证”。 – CouchDeveloper 2013-04-28 15:28:41

4

NSURLConnection的和NSURLSession是由所有HTTP iOS的库所使用的底层类。这两个类为您执行HTTPS处理。没有什么可以让你担心的。

然后,您可以使用库作为AFNetworking或Hermod工作在这些基本的iOS类之上。

  • AFNetworking是最受欢迎的一个。
  • Hermod是我的首选。它是基于AFNetworking构建的新库,它的API更加简单易用。此外,它还内置了对OAuth的支持。