AFNetworking 使用HTTPS请求 添加证书

本文介绍了如何在iOS应用中配置HTTPS并进行证书验证,确保数据传输的安全性。重点讲解了使用AFNetworking库进行HTTPS请求的方法,并展示了如何导入证书、设置验证策略等关键步骤。

转自:http://www.cocoachina.com/bbs/read.php?tid=1709063




017年1月1号之后  苹果所有应用必须https 我按照网上的方法
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
+ ( void )post:( NSString *)url params:( NSDictionary *)params success:( void (^)( id ))success failure:( void (^)( NSError *))failure
{
     // 1.获得请求管理者
     AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
     // 2.申明返回的结果是text/html类型
     mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
     // 3.设置超时时间为10s
     mgr.requestSerializer.timeoutInterval = 10;
     
     // 加上这行代码,https ssl 验证。
     if (openHttpsSSL)
     {
         [mgr setSecurityPolicy:[ self customSecurityPolicy]];
     }
     
     // 4.发送POST请求
     [mgr POST:url parameters:params
       success:^(AFHTTPRequestOperation *operation, id responseObj) {
           if (success) {
               success(responseObj);
           }
       } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
           if (failure) {
               failure(error);
           }
       }];
}
 
+ (AFSecurityPolicy*)customSecurityPolicy
{
     // /先导入证书
     NSString *cerPath = [[ NSBundle mainBundle] pathForResource:@ "120.76.245.127.cer" ofType: nil ];
     NSData *certData = [ NSData dataWithContentsOfFile:cerPath];
     
     // AFSSLPinningModeCertificate 使用证书验证模式
     AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
     
     // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
     // 如果是需要验证自建证书,需要设置为YES
     securityPolicy.allowInvalidCertificates = YES ;
     
     //validatesDomainName 是否需要验证域名,默认为YES;
     //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
     //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是<a href="\"http://www.google.com\"" target="\"_blank\"" onclick="\"return" checkurl(this)\"="" id="\"url_1\"">www.google.com</a>,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
     //如置为NO,建议自己添加对应域名的校验逻辑。
     securityPolicy.validatesDomainName = NO ;
     
     securityPolicy.pinnedCertificates = @[certData];
     
     
     return securityPolicy;
}


我发现在ios9系统是可以访问成功的,在ios7返回code -1004 麻烦各位大神告诉我怎么处理? 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值