在WWDC 2016开发者大会上,苹果宣布了一个最后期限:到2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能。也就是说,自2017年起,网络请求必须由http改成https,当然后来说是不是强制的,但是是早晚的事情.
言归正传:
服务器增加HTTPS并不需要在代码中做什么,只要服务器配置下就好
简单得说就是客户端向服务器发起需求,服务器把证书发给客户端,客户端验证下证书是否合法,然后用证书的数据加密传输数据给服务器,服务器解密。
我们公司买的DV证书
https证书即SSL数字证书,常见的SSL数字证书分为以下几种类型
SSL证书按验证的类别可分:
Ÿ DV SSL证书(域名验证型):只验证域名所有权,适合个人网站、博客等站点使用;
Ÿ OV SSL证书(企业验证型):验证网站所属单位身份,适合企业级用户使用;
Ÿ EV SSL证书(扩展验证型):扩展验证网站所属单位身份,这种证书在浏览器中会显示醒目的绿色地址栏,可信度最高,适合需要用户高度信任的企业级用户使用。
配置AFNetworking
NSString *cerPath =
[[NSBundle mainBundle] pathForResource:@"ca" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
// AFSSLPinningModeCertificate 使用证书验证模式
AFSecurityPolicy *securityPolicy =
[AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
securityPolicy.allowInvalidCertificates = NO;
//validatesDomainName 是否需要验证域名,默认为YES;
securityPolicy.validatesDomainName = YES;
NSSet *set = [NSSet setWithObjects:certData, nil];
[securityPolicy setPinnedCertificates:set];
self.securityPolicy = securityPolicy;
参考文章:
https://www.aliyun.com/zixun/content/2_6_298600.html
http://www.jianshu.com/p/f312a84a944c
http://www.jianshu.com/p/2d72ef8dbf5a