【问题标题】:How to handle https for iOS client如何处理 iOS 客户端的 https
【发布时间】:2013-04-21 09:22:39
【问题描述】:

简单来说,我们知道 https 与 http 不同,它通过 http 隧道对内容进行加密。

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

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

(顺便说一句,AFnetworking 是 iOS 开发人员处理 http 的著名开源项目,但似乎它不处理 https。(如果错了,请纠正我)

【问题讨论】:

  • (1) HTTPS 不加密“HTTP 隧道上的内容”。它是在以前安全的通道上运行的 HTTP - 与您可能想象的相反。 (2) 你打算重新实现 SSL/TLS 吗?如果不是,请使用一些 HTTPS 类,不要重新发明轮子。

标签: ios http https afnetworking digital-certificate


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    它已经为你完成了。

    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"];
    

    【讨论】:

    • 谢谢,好像搞定了。有一个宏 AFNETWORKING_PIN_SSL_CERTIFICATES 来处理证书。有一件事仍然让我感到困惑,对于浏览器,会有一些弹出对话框告诉用户是否信任此证书,并且访问该网站可能存在一些风险。对于iOS,这种情况如何处理?
    • 只有当您的应用程序连接到您拥有 CA 证书的已知服务器时,您才会使用 SSL 证书固定。您应该使用应用程序部署相应的证书 - 可能在捆绑包中。因此,无需询问用户是否可以信任此证书 - 您(开发人员)已经完成了它。顺便说一句,询问用户是否信任证书从来都不是一个好主意——她会选择任何可以连接到任何东西的东西——即使网站的 URL 显示为“attacker.com”
    • 关于宏 AFNETWORKING_PIN_SSL_CERTIFICATES 的一句话。您应该在论坛上提出问题 - 如果已定义标志 - 是否处理“主机名验证”。
    猜你喜欢
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多