- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- //许可非威望机构揭橥的证书
- manager.securityPolicy.allowInvalidCertificates = YES;
- //也不验证域名一致性
- manager.securityPolicy.validatesDomainName = NO;
- //封闭缓存避免干扰测试
- manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
- [manager GET:@"https://www.baidu.com/s?wd=https" parameters:nil progress:nil
- success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable respon搜刮引擎优化bject) {
- NSLog(@"%@",respon搜刮引擎优化bject);
- } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
- NSLog(@"%@",error);
- }];
这种方法导致我们的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
- + (AFHTTPSessionManager *)manager;
- {
- static AFHTTPSessionManager *shareInstance = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
- shareInstance = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:BaseHttpURLString] sessionConfiguration:configuration];
- //设置请求参数的类型:JSON
- shareInstance.requestSerializer = [AFJSONRequestSerializer serializer];
- //设置办事器返回结不雅的类型:JSON (AFJSONResponseSerializer,AFHTTPResponseSerializer)
推荐阅读
3.平台及数据治理才能 在2016年,人工智能公司产生的资金收入估值达到了80亿美元,并且这一数字有望在将来的三年内翻五倍。企业家们都纷纷投资人工智能,不仅将其作为一种降低成本的方法,>>>详细阅读
本文标题:iOS AFNetworking框架HTTPS请求配置
地址:http://www.17bianji.com/lsqh/34908.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示