12.Https

在iOS9以后,直接进行HTTP请求是会报错。系统会告诉我们不能直接使用HTTP进行请求,需要在Info.plist中控制ATS的配置。"NSAppTransportSecurity"是ATS配置的根节点,配置了节点表示告诉系统要走自定义的ATS设置。 "NSAllowsAritraryLoads"节点控制是否禁用ATS特性,设置YES就是禁用ATS功能,那么这时候http请求就可以访问了。

那如果要发送https请求呢?

分两种情况:

  • 证书是受信任的,就是证书是从权威的第三方机构购买的,在这种情况下,我们客户端是不需要做任何事情的。
  • 证书是不受信任的(自签名证书),我们需要做两件事情:
    1.修改info.plist中控制ATS的配置,要求禁用ATS特性。
    2.安装并信任该证书。

如果是自签名证书,我们需要安装并信任该证书:

  • 在用NSURLSession时候,我们会在它的代理方法中得到服务端传来的证书,并进行信任和安装:
12.Https_第1张图片
09BCDE07-C4E8-47C0-AAAD-014EDA310D63.png
  • 在用AFN的时候
12.Https_第2张图片
6847C994-461D-4E93-8E2B-FE88959BE1F7.png
  • 那么我们客户端怎么就能辨别出是第三方颁发的证书还是自签名证书呢?
    其实在苹果内部已经内置了第三方的根证书,发过来证书的时候,苹果可以自行验证;而自己签名的证书,肯定是没有和苹果进行沟通的,这时候,苹果是不信任的,那么就得我们自己来配置,然后进行信任。

你可能感兴趣的:(12.Https)