作家
登录

iOS AFNetworking框架HTTPS请求配置

作者: 来源: 2017-04-23 16:50:37 阅读 我要评论

  1. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
  2. //许可非威望机构揭橥的证书 
  3. manager.securityPolicy.allowInvalidCertificates = YES; 
  4. //也不验证域名一致性 
  5. manager.securityPolicy.validatesDomainName = NO
  6. //封闭缓存避免干扰测试 
  7. manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData; 
  8.  
  9. [manager GET:@"https://www.baidu.com/s?wd=https" parameters:nil progress:nil  
  10. success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable respon搜刮引擎优化bject) { 
  11.         NSLog(@"%@",respon搜刮引擎优化bject); 
  12.     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
  13.         NSLog(@"%@",error); 
  14. }];  

这种方法导致我们的app轻易遭到中心人进击,原因并不美满是我们设置了allowInvalidCertificates=YES 和validatesDomainName=NO,而是本地证书库中没有添加server的CA证书,只如果随便率性的https都能捏造为办事器。

三.证书验证

3.1 加密标准分类

iOS 自签名证书建立(self-signed)

证书验证分为2类,一类是单向认证,一类是双认证。

此外,我们还须要区分证书与证书库的差别,证书库类型包含PKCS12,JKS,BKS等,个中,PKCS12是互联网标准,可以跨平台跨说话(支撑Android,iOS,WP,PC,JAVA,PHP...),JKS是Java标准,只能在Java平台和Java说话下应用,BKS是 Bouncy Castle公司的加密标准,作为Android平台支撑SSL/TLS加密套件PKCS12的弥补,其加密强度很高,然则今朝只用于Android平台。证书的定义是保存在证书库中的数字签名信息或者零丁的证书文件,如crt,pem,cer等文件。在说加密之前,先来看看自签名证书。

3.2 自签名证书 vs 第三方威望机构证书

有人可能会有疑问,自签名证书和第三方威望机构的证书的效用是否一样?

实际上本人认为完全一样,在互联网中,基于B/S架构的办事中,B端平日导入了第三方威望机构的根证书(ROOT CA),实际上就是为了验证网站的CA证书是不是安然的,并且验证是不是由威望的安然机构签发的证书。问题是,我们的App与Server是C/S架构,每个app最多也就只能拜访有限的几个网址,我们本身做的app实际上本身就是信赖本身的所设置的┞肪点URL的,也就是说我们自良士信赖自良士。我们的证书只是为了数据安然传输,不被中心人进击,是以完全没须要应用(ROOT CA),然则具体来说,到今朝为止也没人试过这种方法是否可以经由过程审核。

我试图找第三方CA证书机构交换,貌似他只是嗣魅这是苹不雅的规定,实际上自签名证书本质膳绫腔什愦问题,只要密钥长度,复杂度,加密方法等达到请求即可。

是以,苹不雅如不雅真的请求必须应用第三方CA ROOT签名的规矩,本身是不合理的。这些问题也没法避免,不过,如不雅苹不雅许可自签名证书的话,设置allowInvalidCertificates=YES即可。

3.3 单向认证

须要预备的文件:办事端证书库 , 办事端导出的证书

单向认证,实际上说的是只有Client端对Server端的证书进行验证,Server不须要验证Client端的证书。

自定义类:MyAFNetworking

  1. + (AFHTTPSessionManager *)manager; 
  2.     static AFHTTPSessionManager *shareInstance = nil; 
  3.     static dispatch_once_t onceToken; 
  4.     dispatch_once(&onceToken, ^{ 
  5.  
  6.         NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; 
  7.         shareInstance = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:BaseHttpURLString] sessionConfiguration:configuration]; 
  8.         //设置请求参数的类型:JSON 
  9.         shareInstance.requestSerializer = [AFJSONRequestSerializer serializer]; 
  10.         //设置办事器返回结不雅的类型:JSON (AFJSONResponseSerializer,AFHTTPResponseSerializer) 

      推荐阅读

      人工智能时代,技术人员应该掌握的5项技能

    3.平台及数据治理才能 在2016年,人工智能公司产生的资金收入估值达到了80亿美元,并且这一数字有望在将来的三年内翻五倍。企业家们都纷纷投资人工智能,不仅将其作为一种降低成本的方法,>>>详细阅读


    本文标题:iOS AFNetworking框架HTTPS请求配置

    地址:http://www.17bianji.com/lsqh/34908.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)