iOS AFNetworking SDWebImage HTTP

作者: Yl_T | 来源:发表于2016-11-09 18:16 被阅读2872次

简介:

关于2017.1.1号前必须更换HTTPS的说法是谣传,仔细看下搜索结果的文章,都是卖证书的软文谣传出这个日期的,就此事咨询了Apple开发者计划支持给的结果:我了解您想知道有关 HTTPS 的问题,我为您查询过,我们的 WWDC 里有提及过 App Transport Security 要求 HTTPS。但目前为止,我们对于开发者上还没有这个规定,所以,暂时不须马上更改为 HTTPS。一旦有新的规定,我们一定会通知我们的开发者。

最新消息:Apple宣布延期HTTPS更改计划(暂未公布最后期限)

官网链接:https://developer.apple.com/news/?id=12212016b

当然,从去年到今年Apple不断在强调HTTPS的概念,想必不久后更改HTTPS也是趋势,小伙伴们可以先点个喜欢,关注下作者。作者会在后期持续的更新Apple关于HTTPS的相关动态!留着以后备用哦;

先简要说下,证书分两种:

1,自签证书

2,购买的权威ssl证书,大概一个域名一年2000左右,当然也有通配的更贵了;

认证方式也分两种:

1,单向

2,双向

证书相关:协议TLS v1.2 以上,安全等级AES-128 和 SHA-2 以及 ECDHC

如果公司是购买的权威SSL证书(现在有一部分云服务器提供商提供免费认证服务,所以不一定需要购买),那你什么都不用做,只需要把接口http改成https,删掉plist文件里 Allow Arbitrary Loads,到此,你可以点个关注和喜欢就可以关闭此网页了;怎么知道证书是否经过认证:把后台给你的测试链接用浏览器打开,如果有弹窗,一般就是自签的,不受信任的!不弹窗则是经过权威认证的,例如你打开百度,没有弹窗吧;

我这边测试是用的自签证书,单向认证。建议小伙伴们先和后台写个小 demo测试。下面讲下需要做的:

1,得到.crt证书

先给后台发过去这个:TLS v1.2 以上,AES-128 和 SHA-2 以及 ECDHC 等,什么东西呢?证书的安全等级以及一些算法要求之类的,好吧,我被坑了一回,因为后台给我的是 SHA-1,当然我也没提前跟他说。哈哈,然后请求各种不成功;

让后台给你.crt的证书,然后转换成.cer,进入证书所在目录,执行命令:

openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der

然后把.cer导入工程

删掉plist              Allow Arbitrary Loads

2,获取AFSecurityPolicy

+ (AFSecurityPolicy *)customSecurityPolicy

{

//先导入证书,找到证书的路径

NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https" ofType:@"cer"];

NSData *certData = [NSData dataWithContentsOfFile:cerPath];

    NSLog(@"%@",certData);

//AFSSLPinningModeCertificate 使用证书验证模式

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

//allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO

securityPolicy.allowInvalidCertificates = YES;

//validatesDomainName 是否需要验证域名,默认为YES;

//假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。

//置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的;

//如置为NO,建议自己添加对应域名的校验逻辑。

securityPolicy.validatesDomainName = YES;

NSSet *set = [[NSSet alloc] initWithObjects:certData, nil];

securityPolicy.pinnedCertificates = set;

return securityPolicy;

}

3,AFHTTPSessionManager(就是多加一句代码)

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

// 调用刚才的类方法,得到AFSecurityPolicy

[manager setSecurityPolicy:[YLNetworkingManager customSecurityPolicy]];

NSString *url = @"";

[manager POST:url parameters:nil progress:^(NSProgress * _Nonnull uploadProgress) {

} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

NSLog(@"%@",responseObject);

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];

NSLog(@"https:%@",dic);

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

NSLog(@"%@",error);

}];

好了,只不过是加几句代码,不要被网上众多的信息弄懵逼了 0.0,上面已经说了,先问后台是单向认证还是双向,然后证书是自签还是购买的,购买的你只需要把接口的http改成https,我这里是自签的单向认证的;如果有做双向认证的朋友可以参考以下链接:

双向认证:

afn_2.X版本:http://www.68idc.cn/help/jiabenmake/qita/20150508336834.html

afn_3.X版本:http://www.jianshu.com/p/9e573607be13

主要是梳理下,以防萌新蒙蔽,笔者新手上路,老司机勿喷...0.0,不对的还请留言;

SDWebImage 加载HTTPS链接图片

目前找到的方法是跳过验证。

[img sd_setImageWithURL:imgurl placeholderImage:nil options:SDWebImageAllowInvalidSSLCertificates];

相关文章

网友评论

  • 杏仁丶:辟谣大赞!!
  • mzlqn2011:是谣传吗,苹果的论坛上也有外国开发者在讨论这事
    Yl_T:@mzlqn2011 你可以自己打啊,亲!
    mzlqn2011:@Yl_T \(^o^)/~,你已经打过了是吧
    Yl_T:@mzlqn2011 可以打 开发者计划客服电话询问!
  • MR_Baker:楼主证书怎么弄啊
    Yl_T:@MR_Baker 1,权威的花钱买 2,免费的找后台要
  • 99744d7c4ad6:先收藏再说
  • 代码乱了:那个验证请求的方式是不是一定要用你这种方法?用其它的方法不行吗?
  • 迷路的剑姬:[[SDWebImageManager sharedManager].imageDownloader setValue: nil forHTTPHeaderField:@"Accept"]; 这个 不可以么? SD下载图片
    Yl_T:@迷路的剑姬 没尝试过
  • 给你快乐:请问博主,我这边后台给的证书 签名算法是 带RSA 的SHA-1 (1.2.840.113549.1.1.5),你说你刚开始也是这种的请求不成功,那当时报错是什么错呢?我这边和后台沟通了,他说和这个没关系
    给你快乐:@给你快乐 多谢博主,已经解决了,就是根证书 有问题,后台重新做了证书就好了,谢谢你的文章
    给你快乐:@Yl_T 我和他说了,他也换了,但我不知道他有没有弄对,现在请求结果是code=-1206,说服务器需要服务器需要客户端证书,今天也是了原生类NSURLSession请求,一样的结果,网上找了个demo测试结果也一样,所以我觉得还是服务器的问题
    Yl_T:@给你快乐 有关系的,你说我这里只允许 SHA-2等级以上的,让他换!浏览器请求成功是另一回事,强硬点!
  • 01ee2ca2d59e:写的很不错,很详细
    Yl_T:@致美丽的你丶 感谢支持
  • 16bc531efe4a:这就很尴尬了
    Yl_T:@酒醉了温柔 竟然进错,你也是可以的

本文标题:iOS AFNetworking SDWebImage HTTP

本文链接:https://www.haomeiwen.com/subject/scwlyttx.html