iOS https双向配置

   只需要服务器验证手机端的童鞋可以点开以下链接【ios 单向配置https】 http://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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创业-程序员独自5大思维障碍

程序员是最容易创业的&#xff0c;或者说是创业成本最低的职业。只要有一台电脑和投入自己的时间&#xff0c;就可以写出畅销天下的软件&#xff0c;这是每个程序员的梦想。更何况世界首富常年以来就是程序员出身的比尔盖茨&#xff0c;这也刺激了更多的程序员走上创业之路。 …

leetcode1144. 递减元素使数组呈锯齿状

给你一个整数数组 nums&#xff0c;每次 操作 会从中选择一个元素并 将该元素的值减少 1。 如果符合下列情况之一&#xff0c;则数组 A 就是 锯齿数组&#xff1a; 每个偶数索引对应的元素都大于相邻的元素&#xff0c;即 A[0] > A[1] < A[2] > A[3] < A[4] >…

typescript_清洁架构的TypeScript刺

typescriptby Warren Bell沃伦贝尔(Warren Bell) 清洁架构的TypeScript刺 (A TypeScript Stab at Clean Architecture) 剥洋葱皮的方法不止一种。 (More than one way to skin an onion.) 清洁建筑 (Clean Architecture) There are many videos and articles explaining clean…

星辰小队针对于软件“星遇”的第二次10天冲刺——第10天

日期&#xff1a;2019.6.6 博客期&#xff1a;099 星期四 呃~确实有一部分的功能来不及实现了&#xff0c;针对目前已经实现的功能开始整合&#xff0c;用户界面进行美化&#xff0c;把多于没用的界面和代码类删除掉&#xff0c;制作本软件的叙述性文件和相关文档&#xff0c;根…

mybatis的select、insert、update、delete语句

一、select <!-- 查询学生&#xff0c;根据id --> <select id"getStudent" parameterType"String" resultMap"studentResultMap"> SELECT ST.STUDENT_ID, ST.STUDENT_NAME, ST.STUDENT_SEX, ST.STUDENT_BIRTHDAY, ST.CLASS_I…

appium java简单实例_Appium创建一个Note的实例

近来通过Appium&#xff0c;Robotium等几个框架去了解移动平台自动化测试。Appium官方实例是使用ContactManager.apk&#xff0c;而Robotium使用的是SDK自带的Notepad.apk&#xff0c;为了方便比较&#xff0c;在了解Appium的同时把实例修改成跟Robotium一致的Notepad.apk并记录…

Lync Server 2013无法共享PPT故障排错处理

前段时间帮助朋友看了一个关于Lync Server 2013无法共享PPT的问题&#xff0c;共享PPT时报如下错误&#xff1a; 日志截图如下&#xff1a; 原因如下前端服务器未关联Ofice web Application服务器&#xff0c;关联即可&#xff0c;如下&#xff1a; 关联完成后&#xff0c;如下…

leetcode733. 图像渲染(bfs)

有一幅以二维整数数组表示的图画&#xff0c;每一个整数表示该图画的像素值大小&#xff0c;数值在 0 到 65535 之间。 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值&#xff08;行 &#xff0c;列&#xff09;和一个新的颜色值 newColor&#xff0c;让你重新上色这幅图像…

chrome扩展程序_如何创建Chrome扩展程序

chrome扩展程序by Erika Tan谭咏麟 如何创建Chrome扩展程序 (How to create a Chrome Extension) In this article, I will be teaching you how to make a Chrome Extension of your own. I’m basing it off of lessons learned while creating TalkToMe, a Chrome Extensio…

对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)

7、PASCAL语言&#xff08;一&#xff09;一门通&#xff0c;门门通 在计算机学习问题排行版上&#xff0c;有一个问题绝对是稳居榜首&#xff0c;每次提出都能在各大论坛掀起一股顶帖风暴&#xff0c;而各大网站的每个网络大牛&#xff0c;都会收到无数学院小弟发来弱弱的提问…

leetcode110. 平衡二叉树(递归)

给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。代码 /*** Defi…

spring配置文件注解方式引入的两种方式

一、#{beanID[propertiesName]}方式 <bean id"propertyConfigurer" class"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name"fileEncoding" value"utf-8" /><property name&…

vsc 搜索特定代码_特定问题的通用解决方案:何时编写代码以及何时编写代码...

vsc 搜索特定代码by Rina Artstain通过丽娜阿斯特斯坦 特定问题的通用解决方案&#xff1a;何时编写代码以及何时编写代码 (Generic solutions to specific problems: when to write some code and when to just do it) There is a traditional story that tells of a rabbi w…

java手动编译jar包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

一&#xff0c;实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path….将依赖包添加到工程中后&#xff0c;eclipse不报错了。但是用Maven命令 mvn clean compile 时出错如下&#xff1a;原因是在eclipse中添加了 exteneral jar后&#xff0c;还需要在…

SQL like

确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中&#xff0c;常规字符必须与字符串中指定的字符完全匹配。然而&#xff0c;可使用字符串的任意片段匹配通配符。与使用 和 ! 字符串比较运算符相比&#xff0c;使用通配符可使 LIKE 运…

计划备份mysql数据库

1:mysql是我们使用最多的数据库&#xff0c;如果在日常中正确的对mysql数据进行备份&#xff0c;下面我们就来做这事&#xff0c;通过脚本来实现##########################################################################################################################…

leetcode1333. 餐厅过滤器

给你一个餐馆信息数组 restaurants&#xff0c;其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。 其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false&#xff0c;如果为 true 就意味着你…

3.27下午

转载于:https://www.cnblogs.com/bgd140201228/p/6628194.html

2019春季学期进度报告(十四)

课上花费时间&#xff1a;5h 课下花费时间&#xff1a;6h 学会的新内容&#xff1a;阿里云服务器的购买&#xff0c;websockt入门。 代码量&#xff1a;200h 转载于:https://www.cnblogs.com/Aduorisk/p/11056750.html

rxjs 怎么使用_使用RxJS Observables进行SUPER SAIYAN

rxjs 怎么使用I loved DragonBall Z as a kid, and still love it as an adult. 我从小就爱DragonBall Z&#xff0c;但从小到大仍然喜欢它。 Among the ludicrous number of transformations, the original Super Saiyan remains my favorite. 在可笑的转换数量中&#xff0c…