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怎么用
如何快速搭建高效可靠的建站解决方案?

