博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之hHTTPS的使用
阅读量:4289 次
发布时间:2019-05-27

本文共 1834 字,大约阅读时间需要 6 分钟。

参考: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];

转载地址:http://zcmgi.baihongyu.com/

你可能感兴趣的文章
感谢伤害我的人
查看>>
请不要做浮躁的人----(学习编程的忠告)
查看>>
网络_volley_使用方法和代码
查看>>
网络_AsyncHttpClient_使用方法和代码
查看>>
网络_断点续传.断点下载
查看>>
网络_Xutils
查看>>
网络_多线程下载
查看>>
网络_httpClient
查看>>
网络_HttpURLConnection_原始类
查看>>
网络_OKHttp
查看>>
android_事件分发机制_几行代码直接通晓
查看>>
图片_OOM_OutOfMemory
查看>>
技术学习_经验分享
查看>>
android中常见的设计模式有哪些?
查看>>
ViewDragHelper_v4的滑动视图帮助类_解释和代码
查看>>
即时通讯技术- 推送技术协议方案
查看>>
vitamio简介.java
查看>>
ActiveMQ 实现负载均衡+高可用部署方案
查看>>
《搜索和推荐中的深度匹配》——2.5 延伸阅读
查看>>
解读:阿里文娱搜索算法实践与思考
查看>>