iOS适配https证书问题(AFNetworking3.0为例)

发布时间 - 2026-01-10 23:07:13    点击率:

众所周知,苹果有言,从2017年开始,将屏蔽http的资源,强推https

楼主正好近日将http转为https,给还没动手的朋友分享一二

1.准备证书

首先找后台要一个证书(SSL证书,一般你跟后台说要弄https,然后让他给你个证书,他就知道了),我们需要的是.cer的证书。但是后台可能给我们的是.crt的证书。我们需要转换一下:打开终端 -> cd到.crt证书路径 -> 输入openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der,证书就准备好了,拖入工程,记得选copy。

2.新建一个类或者类方法

以下代码借鉴的,楼主自己是放在一个叫FactoryUI的类中

//支持https
+ (AFSecurityPolicy *)customSecurityPolicy
{
  //先导入证书,找到证书的路径
  NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"你的证书名字" ofType:@"cer"];
  NSData *certData = [NSData dataWithContentsOfFile:cerPath];

  //AFSSLPinningModeCertificate 使用证书验证模式
  AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

  //allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
  //如果是需要验证自建证书,需要设置为YES
  securityPolicy.allowInvalidCertificates = YES;

  //validatesDomainName 是否需要验证域名,默认为YES;
  //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
  //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
  //如置为NO,建议自己添加对应域名的校验逻辑。
  securityPolicy.validatesDomainName = NO;
  NSSet *set = [[NSSet alloc] initWithObjects:certData, nil];
  securityPolicy.pinnedCertificates = set;

  return securityPolicy;
}

3.修改AFNetWorking的请求(AFNetworking3.0为例)

  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  manager.requestSerializer.timeoutInterval = 5.0;
  [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]];//如2若提到的FactoryUI的类方法

 ···后面的就还是一样了

补充:App Transport Security Settings还是要设置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios  # https适配  # 适配https证书  # afnetworking3  # https  # iOS9苹果将原http协议改成了https协议的方法  # 详解iOS开发 - 用AFNetworking实现https单向验证  # 双向验证  # IOS开发 支持https请求以及ssl证书配置详解  # iOS之Https自签名证书认证及数据请求的封装原理  # iOS实用教程之Https双向认证详解  # 的是  # 设置为  # 默认为  # 还没  # 放在  # 让他  # 他就  # 给我们  # 与你  # 这种情况  # 说要  # 为例  # 另外一个  # 一个叫  # 该项  # 主要用于  # 准备好了  # 你跟  # 众所周知  # 大家多多 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  如何快速建站并高效导出源代码?  Laravel如何处理文件下载请求?(Response示例)  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Windows Hello人脸识别突然无法使用  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  网页设计与网站制作内容,怎样注册网站?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  大型企业网站制作流程,做网站需要注册公司吗?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  JS经典正则表达式笔试题汇总  西安专业网站制作公司有哪些,陕西省建行官方网站?  北京企业网站设计制作公司,北京铁路集团官方网站?  Python函数文档自动校验_规范解析【教程】  如何解决hover在ie6中的兼容性问题  如何快速搭建安全的FTP站点?  如何快速搭建高效服务器建站系统?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何在建站之星网店版论坛获取技术支持?  php json中文编码为null的解决办法  如何用好域名打造高点击率的自主建站?  如何在建站主机中优化服务器配置?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何快速生成专业多端适配建站电话?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  想要更高端的建设网站,这些原则一定要坚持!  高防服务器如何保障网站安全无虞?  *服务器网站为何频现安全漏洞?  高端云建站费用究竟需要多少预算?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  JavaScript如何实现音频处理_Web Audio API如何工作?  如何在IIS管理器中快速创建并配置网站?  bing浏览器学术搜索入口_bing学术文献检索地址  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  JavaScript如何实现路由_前端路由原理是什么  在线教育网站制作平台,山西立德教育官网?  如何用AWS免费套餐快速搭建高效网站?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何快速搭建高效可靠的建站解决方案?