参考来源:http://www.cnblogs.com/jys509/p/5001566.html

现在在工作中的工作需求:https请求验证证书
一般来讲如果app用了web service , 我们需要防止数据嗅探来保证数据安全.通常的做法是用ssl来连接以防止数据抓包和嗅探

其实这么做的话还是不够的 。 我们还需要防止中间人攻击(不明白的自己去百度)。攻击者通过伪造的ssl证书使app连接到了伪装的假冒的服务器上,这是个严重的问题!那么如何防止中间人攻击呢?

首先web服务器必须提供一个ssl证书,需要一个 .crt 文件,然后设置app只能连接有效ssl证书的服务器。

在开始写代码前,先要把 .crt 文件转成 .cer 文件,然后在加到xcode 里面

IOS端要支持https请求,需要先拿到后台的CA证书。我这里是参考上面的。让后台给了个 **.crt证书文件
mac上双击**.crt文件  然后在钥匙串导出为cer格式
把cer格式文件放入工程中  接下来就是参考上面链接中的   写个方法

AFNetworking 对数据进行https ssl加密

实际上,很简单,只需要两步。

第一步:新增一个类

+ (AFSecurityPolicy*)customSecurityPolicy
{// /先导入证书NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"hgcang" ofType:@"cer"];//证书的路径NSData *certData = [NSData dataWithContentsOfFile:cerPath];// AFSSLPinningModeCertificate 使用证书验证模式AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];// allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO// 如果是需要验证自建证书,需要设置为YESsecurityPolicy.allowInvalidCertificates = YES;//validatesDomainName 是否需要验证域名,默认为YES;//假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。//置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。//如置为NO,建议自己添加对应域名的校验逻辑。securityPolicy.validatesDomainName = NO;securityPolicy.pinnedCertificates = @[certData];return securityPolicy;
}

第二步:直接在请求方法里加入,只有一行代码

+ (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];// 加上这行代码,https ssl 验证。//[mgr setSecurityPolicy:[self customSecurityPolicy]];// 3.发送POST请求[mgr POST:url parameters:paramssuccess:^(AFHTTPRequestOperation *operation, id responseObj) {if (success) {success(responseObj);}} failure:^(AFHTTPRequestOperation *operation, NSError *error) {if (failure) {failure(error);}}];
}

接下来,我们通过Charles抓取数据,抓到的数据已经加密。

可能遇到的问题

1)证书一定要拉到项目里面,AFN加了验证之后,看看获取证书的certData是否为空。如果为空,则证书有问题

NSData *certData = [NSData dataWithContentsOfFile:cerPath];

2.如果https服务器没有数据返回,很大可能是因为服务器配置出了问题。

AFNetworking 对数据进行https ssl加密相关推荐

  1. https 不会被中间人攻击——因为中间人即使拿到了数据,也是加密的

    只要你登陆了一个使用 HTTPS 数据加密的网站,浏览的页面的内容如果被人中途看见,将会是一团乱码.它也能保证,你浏览的页面就是你想浏览的,不会被黑客在中途修改,网站收到的数据包也是你最初发的那个,不 ...

  2. 八大免费SSL证书-给你的网站免费添加Https安全加密

    SSL证书,用于加密HTTP协议,也就是HTTPS.随着淘宝.百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL证书 ...

  3. https中SSL加密过程详解,看这一篇就够了!

    我们所说的https实际上就是安全版本的http,是http+ssl加密实现的. SSL握手协议 1.客户端:发起一个 HTTPS 请求,请给我公钥 2.服务器:这是我的证书,里面有加密后的公钥 3. ...

  4. https协议--SSL加密流程

    文章目录 https协议格式: https加密流程(SSL加密流程) https加密流程总结: https-即加密的http协议,使用了SSL加密. hhtp服务端口:80 https服务端口:443 ...

  5. nginx配置ssl加密(单双向认证、部分https)

    nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换( ...

  6. 关于https的ssl加密技术

    简述SSL加密过程 1.什么是SSL加密技术 SSL 的英文全称是 "Secure Sockets Layer" ,中文名为 " 安全套接层协议层 " ,它是网 ...

  7. 正确配置SSL加密,确保HTTPS安全性能

    SSL加密是Web应用程序安全的基础,它们为计算机网络提供通信数据加密.数据完整性校验和通信方身份认证功能,保护通信安全隐私.不过,只有正确配置SSL加密,才能真正发挥HTTPS加密的作用. 安全测试 ...

  8. HTTPS的链接建立、通信过程,SSL加密

    文章目录 Https建立链接整体示意图 准备工作(对应图中prepare1234) 建立链接 1 客户端发起请求(对应图中1) 2 客户端发送Client Hello包(对应图中2) 3 Server ...

  9. 浅谈https\ssl\数字证书

    在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本 ...

最新文章

  1. 随着firefox的迭代更新:FireBug不能用了?使用火狐Try Xpath插件替代Firebug和Firepath...
  2. 通道Channel-IO 多路复用
  3. 项目添加JWT工具类
  4. pyqt5 下拉 多页 点击_PyQt5实战——自定义翻页控件实现
  5. 如何在一个日期值上加上分钟值得到新的日期
  6. 写入接口c语言_嵌入式LCD的接口类型详解
  7. 自学啊哈C的推箱子的编程代码
  8. 433MHz遥控器loop天线方案 CA-S01 CrossAir贴片天线
  9. 牛奶可乐经济学(一)
  10. 手把手教你制作油管上30万播放的动态登录页面效果
  11. 制图软件cad-深度了解Mechanical 工具组合
  12. 小米开源框架MACE 源码阅读笔记 1
  13. 游戏是程序员的深坑?
  14. 很牛的运维必须精通Linux
  15. wps word 表格中,每次换行,都会变成另一种字体,无法对其的问题解决。
  16. 2018年前端开发回顾
  17. 跨国面板数据(1960-2020)七:银行、外汇、货币、利率、通货膨胀、债务(excel、stata版)
  18. Gearman 心得
  19. L2-040 哲哲打游戏 (25 分)(分析题目意思,读懂题)
  20. 程序员『天梯排行榜』

热门文章

  1. HBase停止集群报错,pid: No such file or directory
  2. 万用表检测常用元器件的方法
  3. PADS 非常用操作 备忘
  4. 微软:PHP在IIS 7上雄起
  5. [转] 常见WinCE启动失败原因分析
  6. java mqtt客户端_基于 t-io 实现一个 mqtt5 协议之 mica-mqtt
  7. 带通滤波器作用和用途_带通滤波器的作用和电路设计图
  8. 英伟达最大gpu_英伟达正式发布Ampere架构GPU,完成史上最大性能飞跃
  9. 3D游戏的照明设计理论,第3部分:三点照明法的异端与误区
  10. 计算信源熵和香农编码C语言,信息论与编码课程设计报告-统计信源熵与香农编码.pdf...