iOS https双向配置

   只需要服务器验证手机端的童鞋可以点开以下链接【ios 单向配置httpshttp://www.cnblogs.com/OC888/p/6560602.html

  兜兜转转弄了一个星期,网上的大多数demo都下来过一遍了,各种偏方都试了,终于配置好了双向配置,网上大多数标题为双向的文章都有不足之处,要么纯粹就是服务器验证手机端的单向认证,要么代码不全,要么demo报错。今天我来终结afn双向配置https这个问题,想知道https原理的可以戳进文章开头,里面有流程解释,此文章只负责代码部分,文章末尾放demo,好使请点赞

第一步,infoplist添加ATS(应用传输秘密设置),如下图:

     什么?看不到。。。后面是什么字母?没错就是这么坑,老汁就是被某人的教程这么坑过整整一天,下面放完整的string:NSExceptionAllowsInsecureHTTPLoads  NSExceptionRequiresForwardSecrecy       NSIncludesSubdomains,依次对应的布尔值为是非是,(此外多加一处报错信息处理方法:报错信息为

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)

这个问题的出现是因为ios9里对TLS的版本配置为1.2;而服务器使用Tomcat配置时,默认为1.0;所以解决方法是在刚才infoplist三个布尔值后添加一对<key>NSExceptionMinimumTLSVersion</key>
      <string>TLSv1.0</string>)如下图:

 

第二步,需要提前说明的是,务必使用afn3.0或者以上版本,因为afn支持的证书格式从2.x的.cer变成了3.x的.der,所以我私自改了一下AFHTTPSessionManager.m的全部代码,文件在demo中,需要的话直接拉走修改即可,或者直接在本文末尾处复制AFHTTPSessionManager.m的代码,如果自己工程里的afn版本报错没有找到某些方法或者头文件,那就升级成最新版本的afn,然后把新版本里的AFHTTPSessionManager.m的代码用demo的AFHTTPSessionManager.m里的全部代码复制替换。

第三步  添加两个证书,1,【服务器.cer 证书】,包含公钥,客户端用它来加密,然后服务器会用这个证书的私钥解密,这样可以服务器确认发来的消息是正儿八经的app传来的信息

            2,【客户端的.p12证书】,说到p12我就猜想应该是为了不让破解了软件ipa的人拿到证书才导出成p12格式的,但是想不明白为什么【服务器.cer】证书不导成p12?望大神解答疑惑感激不尽,另外问后台要这两个证书的时候记得要p12的密码

第四步 DEMO里面ReSetChallenge的.m和.h是对afn的二次封装,直接拿来食用即可,但是切记要改证书名和p12密码,里面封装了分别返回单向认证和双向认证的

AFHTTPSessionManager方法,最后放demo地址,涉及公司机密本人证书已删除,直接放进证书即可使用(https://github.com/OC888/omits),如果有疑问可直接微博留言,作者会一一回答

转载于:https://www.cnblogs.com/OC888/p/6616583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值