NSURLConnection实现HTTPS(SSL)链接请求
来源:互联网 发布:用什么看网络电视好 编辑:程序博客网 时间:2024/05/22 01:28
最近检测APP应用的网络请求,发现HTTP方式的接口,请求的数据比较容易让不道德的人截取并加以利用。所以建议接口请求数据的方式还是使用HTTPS(SSL),相对的安全些。
在iOS中,使用NSURLConnection来请求HTTPS,就需要处理SSL认证,NSURLConnectionDelegate中定义了处理认证的方法:
123
– connection:canAuthenticateAgainstProtectionSpace:– connection:didReceiveAuthenticationChallenge:- connection:didCancelAuthenticationChallenge:
NSURLConnection中处理SSL
123
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace{ return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];}
- 接收任何证书
123
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{ [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];}
- 使用私有证书验证
123456789101112131415161718192021222324252627
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{ static CFArrayRef certs; if (!certs) { NSData *certData =[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"srca" ofType:@"cer"]]; SecCertificateRef rootcert =SecCertificateCreateWithData(kCFAllocatorDefault,CFBridgingRetain(certData)); const void *array[1] = { rootcert }; certs = CFArrayCreate(NULL, array, 1, &kCFTypeArrayCallBacks); CFRelease(rootcert); // for completeness, really does not matter } SecTrustRef trust = [[challenge protectionSpace] serverTrust]; int err; SecTrustResultType trustResult = 0; err = SecTrustSetAnchorCertificates(trust, certs); if (err == noErr) { err = SecTrustEvaluate(trust,&trustResult); } CFRelease(trust); BOOL trusted = (err == noErr) && ((trustResult == kSecTrustResultProceed)||(trustResult == kSecTrustResultConfirm) || (trustResult == kSecTrustResultUnspecified)); if (trusted) { [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge]; }else{ [challenge.sender cancelAuthenticationChallenge:challenge]; }}
AFNetWorking框架中处理SSL
使用AFURLConnectionOperation类的两个方法,将上面的代码以block方式传入即可。
12
– setAuthenticationAgainstProtectionSpaceBlock:– setAuthenticationChallengeBlock:
0 0
- NSURLConnection实现HTTPS(SSL)链接请求
- java实现https ssl请求url
- 如何添加SSL证书实现https请求
- HTTPS 请求 SSL验证
- 利用struts2-ssl-plugin实现https安全链接
- 利用struts2-ssl-plugin实现https安全链接
- 【备份】Java实现忽略SSL认证请求https
- iOS之使用NSURLConnection连接HTTPS(SSL)站点
- QT https post请求 ssl
- NSURLConnection 实现webView显示HTTPS页面
- 使用Volley实现Https请求, Volley SSL 双向自认证证书请求。
- 通过 NSURLConnection实现 同步/ 异步 请求 (WXHL)
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
- NSURLConnection和NSMutableURLRequest 实现同步、异步请求
- JAVA SSL HTTPS 链接详解 生成证书
- Java请求Https SSL加密代码
- 计算两地距离多少公里或者英里
- iOS应用程序状态切换相关
- hdu1100
- MIPI DSI协议介绍
- sstab 保存后的读取问题
- NSURLConnection实现HTTPS(SSL)链接请求
- 贫农的大数据之二(Kafka)
- myeclipse中java代码注释模板问题
- UIView动画(过渡效果)的学习笔记
- 如何快速查找电脑中的文件
- Windows 下 web.py上传图片乱码的解决办法
- LeetCode刷题笔录 Binary Tree Zigzag Level Order Traversal
- 打包和压缩及常见解压缩方法
- 多媒体之音频audio帖子汇总