iOS之hHTTPS的使用
来源:互联网 发布:组合楼板计算软件 编辑:程序博客网 时间:2024/06/05 02:21
参考:http://www.jianshu.com/p/97745be81d64
http://www.cocoachina.com/ios/20150810/12947.html
iOS9推出的时候,苹果希望大家使用https协议,来提高数据传输之间的安全性。下面我就从最简单的代码介绍,如何在工程中设置,来支持https的请求。
一、证书准备篇
1.证书转换
在服务器人员,给你发送的crt证书后,进到证书路径,执行下面语句
// openssl x509 -in 你的证书.crt -out你的证书.cer -outform der
这样你就可以得到cer类型的证书了。双击,导入电脑。
2.证书放入工程
1、可以直接把转换好的cer文件拖动到工程中。
2、可以在钥匙串内,找到你导入的证书,单击右键,导出项目,就可以导出.cer文件的证书了
=======修改info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
====AFN 支持https(校验证书,不可以抓包):
// 1.初始化单例类
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 注意写法的变化
manager.securityPolicy= [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
//AFSSLPinningModeNone 这个模式表示不做 SSL pinning,只跟浏览器一样在系统的信任机构列表里验证服务端返回的证书。若证书是信任机构签发的就会通过,若是自己服务器生成的证书,这里是不会通过的。 //AFSSLPinningModeCertificate 这个模式表示用证书绑定方式验证证书,需要客户端保存有服务端的证书拷贝,这里验证分两步,第一步验证证书的域名/有效期等信息,第二步是对比服务端返回的证书跟客户端返回的是否一致。 //AFSSLPinningModePublicKey 这个模式同样是用证书绑定方式验证,客户端要有服务端的证书拷贝,只是验证时只验证证书里的公钥,不验证证书的有效期等信息。只要公钥是正确的,就能保证通信不会被窃听,因为中间人没有私钥,无法解开通过公钥加密的数据。
// 2.设置证书模式
NSString * cerPath = [[NSBundlemainBundle]pathForResource:@"xxx"ofType:@"cer"];
NSData * cerData = [NSDatadataWithContentsOfFile:cerPath];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData,nil]];
// 客户端是否信任非法证书
manager.securityPolicy.allowInvalidCertificates = YES;
// 是否在证书域字段中验证域名
[manager.securityPolicy setValidatesDomainName:NO];
=====AFN 支持https(不校验证书,可以抓包查看):
// 1.初始化单例类
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 2.设置非校验证书模式
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
manager.securityPolicy.allowInvalidCertificates = YES;
[manager.securityPolicy setValidatesDomainName:NO];
- iOS之hHTTPS的使用
- 【iOS】iOS之RGB颜色的使用
- IOS之ZBarReaderView的使用
- IOS之UIPickView的使用
- iOS 之 AFImageRequestOperation的使用
- IOS之【UINavigationController的使用】
- iOS之UIActionSheet的使用
- iOS 之Reachability的使用
- iOS之UIToolBar的使用
- iOS之UITableView的使用
- iOS之UITableViewController的使用
- iOS之UISearchBar的使用
- iOS之UISearchDisplayController的使用
- iOS之UINavigationBar的使用
- iOS之UINavigationController的使用
- iOS之UICollectionView的使用
- iOS之UIScrollView的使用
- iOS之UITabBar的使用
- Socket之客户端Socket
- 使用git管理unity工程
- Java Swing事件处理机制
- Shader补充记录
- 使用 Spring 2.5 注释驱动的 IoC 功能
- iOS之hHTTPS的使用
- A Spy in the Metro UVA
- Java简介
- DM368开发 -- 编码并实时播放
- Android DisplayMetrics类获取屏幕大小
- ADB
- 【BigData】Jsoup+FusionCharts实现根据网页url解析网页数据,并用图表显示
- Android Gradle的使用
- django-cms的管理员登录密码