App中HTTPS设置
2016-01-20 11:09
645 查看
为了安全方面的考虑,项目想改用HTTPS进行数据传输.目前项目所用的网络请求是AFN2.6版本的,默认不支持HTTPS网址进行数据请求,错误代码:
根据网上资料进行修改:
在Info.plist添加字段App Transport Security Settings,设置为YES
一:第一种方法是在网络请求类中添加
二:第二种方法是
(1)下载网站的证书导入工程
(2)新建类方法
(3)修改AFN源码,如图
这样就可以用https网址进行数据请求了.
后记:HTTPS协议还有SSL还很不清楚,计算机基础差,以后急需补充.
参考资料:
http://www.jianshu.com/p/20d5fb4cd76d
http://oncenote.com/2014/10/21/Security-1-HTTPS/
[code]2016-01-20 08:49:00.780 TestHttps[1494:30088] CFNetwork SSLHandshake failed (-9824) 2016-01-20 08:49:00.781 TestHttps[1494:30088] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824) 2016-01-20 08:49:00.782 TestHttps[1494:29950] error==Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={_kCFStreamErrorCodeKey=-9824, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSUnderlyingError=0x7ff7f2c3d260 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSErrorFailingURLStringKey=https://example.com/, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFNetworkCFStreamSSLErrorOriginalValue=-9824, _kCFStreamPropertySSLClientCertificateState=0, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., _kCFStreamErrorDomainKey=3, NSErrorFailingURLKey=https://example.com/, _kCFStreamErrorCodeKey=-9824}}, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSErrorFailingURLKey=https://example.com/, NSErrorFailingURLStringKey=https://example.com/, _kCFStreamErrorDomainKey=3}
根据网上资料进行修改:
在Info.plist添加字段App Transport Security Settings,设置为YES
一:第一种方法是在网络请求类中添加
[code]AFSecurityPolicy * policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; policy.allowInvalidCertificates = YES; policy.validatesDomainName = NO; manager.securityPolicy = policy;
二:第二种方法是
(1)下载网站的证书导入工程
(2)新建类方法
[code]//自定义安全策略 + (AFSecurityPolicy*)customSecurityPolicy { // /先导入证书 NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@"cer"];//证书的路径 // NSString * cerPath = [[NSBundle mainBundle]pathForResource:@"https" ofType:@"cer"]; // NSLog(@"%@",cerPath); NSData *certData = [NSData dataWithContentsOfFile:cerPath]; // NSLog(@"%@",certData); // NSSet * certSet = [[NSSet alloc] initWithObjects:certData, nil]; // AFSSLPinningModeCertificate 使用证书验证模式 AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO // 如果是需要验证自建证书,需要设置为YES securityPolicy.allowInvalidCertificates = YES; //validatesDomainName 是否需要验证域名,默认为YES; //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。 //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。 //如置为NO,建议自己添加对应域名的校验逻辑。 securityPolicy.validatesDomainName = NO; securityPolicy.pinnedCertificates = @[certData]; return securityPolicy; }
(3)修改AFN源码,如图
这样就可以用https网址进行数据请求了.
后记:HTTPS协议还有SSL还很不清楚,计算机基础差,以后急需补充.
参考资料:
http://www.jianshu.com/p/20d5fb4cd76d
http://oncenote.com/2014/10/21/Security-1-HTTPS/
相关文章推荐
- AJAX学习笔记(三)——XMLHttpRequest 对象
- Linux:网络yum源设置
- 附录_HTTP状态码
- TCP连接状态详解及TIME_WAIT过多的解决方法
- TCP拥塞控制
- CocoaPods的ruby问题 Error fetching http://ruby.taobao.org/:
- Android39_Volley网络通信框架
- android 网络广播 类似QQ动态检查网络
- TCP,UDP数据包的大小以及MTU
- android 使用广播监听网络状态
- 台湾网络被大陆表情包碾压事件的意义被低估
- redhat 网络配置
- Android23_网络存储之HttpClient
- http header
- Android21_HttpWatch及文件上传
- 关于MAC环境下ADT模拟器无法连接网络的解决方法
- 快速Android开发系列网络篇之Volley
- Microsoft.XMLHTTP对象详解
- PDP 上下文 (2011-03-31 17:40:27) http://blog.sina.com.cn/s/blog_798a531d0100qe9q.html
- Linux内核TCP/IP参数分析与调优