iOS适配HTTPS、开启ATS让你的域名更安全
来源:互联网 发布:凸优化 公开课 编辑:程序博客网 时间:2024/05/21 21:37
马上要到苹果给出的到期时间了,适配HTTPS提上了日程。
苹果在2016年6月份的发布会上提出2017年的1月1日,所有AppStore的APP必须要开启ATS(也就是使用HTTPS)。适配HTTPS其实前端并不需要很多的工作量,下面我就说一下我的适配之路,供大家参考。
开通SSL
如果是自己测试可以申请免费的,公司用的话最好是购买付费SSL证书,这一部分后台人员就可以搞定了。
客户端
客户端适配https,也就是启用ATS特性需要做的事
1.获取具有ATS特性的验证证书,后台人员可以给或者直接在pc域名上的锁标志把证书拉下来;
2.修改后台适配好的域名http->https;
3.修改info.plist文件AppTransportSecuritySettings,适配https;
4.AFHTTPSessionManager实例配置https代码;
5.webView添加防止请求撤销代码;
话不多说上代码
NSString *url = @"https://api"; //1.获取站点证书 NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"ssl_bundle" ofType:@".cer"]; NSData *cerData = [NSData dataWithContentsOfFile:cerPath]; NSSet *cerSet = [NSSet setWithObjects:cerData, nil]; //2.https配置 AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; //allowInvalidCertificates 是否信任服务器无效(也就是自建证书)或过期的SSL证书。默认为“不”。 //需要自建证书则默认YES,测试的时候可以关闭,正式的开启 securityPolicy.allowInvalidCertificates = YES; //validatesDomainName 是否验证域名。默认为“是”。 建议开启 securityPolicy.validatesDomainName = YES; //3.添加证书 [securityPolicy setPinnedCertificates:cerSet]; AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; //4.配置https manager.securityPolicy = securityPolicy; [manager GET:url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) { NSLog(@"进度:%f",1.0 * downloadProgress.completedUnitCount/downloadProgress.totalUnitCount); } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"成功:%@",responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"失败:%@",error); }];
UIWebView
//加载失败- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"加载失败-----web:%@",_urlString); //一个页面没有被完全加载之前收到下一个请求,此时迅速会出现此error,error=-999 //此时可能已经加载完成,则忽略此error,继续进行加载。 if ([error code] == NSURLErrorCancelled) { return; } [SVProgressHUD dismiss];}因为HTTPS的请求方式会稍微慢一点点导致webView加载的时候会出现类似问题(个人愚见),这样处理可以避免次问题。
问题
在配置过程中的问题:1.证书和代码都搞定后,请求接口返回code-999这个意思是请求取消,最后确定是证书问题。
注意:ssl证书域名里的一个通配符只能使用一级域名,多级域名要使用多个通配符(这个就是上面的问题)。
比如https://ddy.text.com这个是一级域名,https://ddy.api.text.com则是二级域名,如果设置的支持域名是:*.ddy.com则就是一级域名可以验证成功。想适配这种情况有两种方式:1.在花一千块钱多买一个通配符的使用权限(不划算啊); 2.利用域名映射就可以解决啦。
1 0
- iOS适配HTTPS、开启ATS让你的域名更安全
- iOS 升级HTTPS通过ATS你所要知道的
- iOS 升级HTTPS通过ATS你所要知道的
- iOS 升级HTTPS通过ATS你所要知道的
- iOS升级HTTPS通过ATS你所要知道的
- iOS 升级HTTPS通过ATS你所要知道的
- iOS 升级 HTTPS 通过 ATS 你所要知道的
- ATS iOS 升级HTTPS通过ATS你所要知道的
- 让你的PHP更安全
- 让你的PHP更安全
- 让你的web应用更安全
- const让你的代码更安全
- 更安全的HTTPS
- 安全组规则让你的win主机更安全
- 2017元旦快要来了,作为iOS开发者的你改用更安全的HTTPS了么
- 改用更安全的HTTPS
- 让你的服务器更安全的20个配置
- 如何让你的Web服务器日志文件更安全?
- 【转载】FckEditor 2.6.3 for Java 2.4 配置
- 【转载】ckeditor 中去掉\'浏览服务器\'按钮
- 判断字符串中包含某个字符串
- 【转载】FCKeditor 2.6.3 与FCKeditor.java 2.4在JSP中配置
- 【转载】Myeclipse10 安装Aptana插件
- iOS适配HTTPS、开启ATS让你的域名更安全
- 【转载】servlet 上传文件
- 【转载】apache-tomcat-7.0.40加大内存配置
- myeclipse----JVM运行内存溢出问题解决
- Socket相关
- java --手机号码校验
- oracle数据库误操作把表删除了,不知道删除了哪张表,怎么找回
- 生成一个唯一的6位字符编码(到2063年前一直生效)的JAVA 方法
- 移到代理技术