AFNetworking 2.0 实现自签名SSL的HTTPS网络连接

本文介绍了如何使用AFNetworking 2.0在iOS应用中实现自签名SSL的HTTPS网络连接。重点讲解了将SSL证书导入Xcode并进行HTTPS连接的步骤,强调了安全性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发现网上很少有这方面的资料,最近在做这个,顺便就分享一下AFNetworking是如何实现HTTPS的,本人很懒,多数用直接用代码和comments说明了。注意:这里用的是AFNetworking 2.0版本,用v 1.0的请飘过~~~


说道HTTPS就得说一下SSL证书,有以下几种方式:

1. 使用正规的商用授权证书,需要花钱的,据说也不算贵。四五十美金一年(自己没用过)。如果有这样的证书,AFNetworking不用任何额外的设置,只是在POST或者GET是使用的URL变成“https://"开头的就可以了。
2. 使用自己生成SSL证书:也就是使用无效证书。这种方式也比较普遍,尤其对中小企业和个人开发来讲,免费总是好的,而且灵活自如。随时可以更换证书。对于这种方式,AFNetworking也是支持的,但需要额外的几行配置代码才行。同时,这种方式有两种不同的连接方式:

2.1:证书不保存在手机客户端,客户端接收所有无效证书。

2.2:客户端只接受来自特定服务器端的证书。


从安全上讲,2.2是最推荐的做法。本章也主要是介绍它。好了,其他HTTPS知识和证书问题自己去找一些网络资料吧。我下面直接上code说明一下AFNetworking 2.0是如何实现HTTPS连接的。


第一步:把导出的客户端证书(必须是.cer文件)添加到xcode里

第二步:在定义了AFHTTPRequestOperationManager之后,需要添加AFSecurityPolicy(看下面代码)

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

// 添加security policy
// 注意:PinningMode必需是使用Public Key。如果是None,将接收所有自定义的无效证书,会产生安全漏洞
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
// 设置可以接收无效的证书
[securityPolicy setAllowInvalidCertificates:YES]; 
// 设置不检测整个证书链,只要其中一个正确即可
[securityPolicy setValidatesCertificateChain:NO];

manager.securityPolicy = securityPolicy;

// 正常使用GET和POST,URL里是https
[manager GET:@"https://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];


强烈大家在使用AFnetworking的时候,写一个AFHTTPRequestOperationManager的子类,把这个子类变成Singleton Class,把上面SecurityPolicy写在在init方法里。介绍一编很好的教学文章,里面介绍了如何写operation manger的子类。想学习AFnetworking的同学,希望能够耐心阅读完:

http://www.raywenderlich.com/59255/afnetworking-2-0-tutorial


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值