准备
iOS做https适配时对服务器是有一定要求的,服务端必须要是一个符合ATS(App Transport Security)要求的HTTPS。简单说要满足以下几个要求:
 
1.Transport Layer Security协议版本要求TLS1.2以上
2.服务的Ciphers配置要求支持Forward Secrecy等
3.证书签名算法符合ATS要求等
 
Moya对应版本
Moya版本号(10.0.x);Alamofire版本号:4.7.x
 
实现方法
1、默认非HTTPS实现方法
默认情况下定义Manager:
    MoyaProvider<MultiTarget>.defaultAlamofireManager()
该方法不需要做任何处理,Moya默认已经实现
 
2、HTTPS免证书实现方法(校验证书,可以抓包):
 
代码:
         let manager: Manager = MoyaProvider<MultiTarget>.defaultAlamofireManager()
         manager.delegate.sessionDidReceiveChallenge = {
                    session,challenge in
       
                    return    (URLSession.AuthChallengeDisposition.useCredential,URLCredential(trust:challenge.protectionSpace.serverTrust!))
                }
注:需要导入:import Alamofire
 
 
3、HTTPS+证书实现方法(校验证书,不可以抓包)
 
在实现本方法前,首先需要服务器端提供“*.crt”证书,然后进入证书所在的路径,控制台执行以下命令:
openssl x509 -in *.crt -out *.cer -outform der
得到cer类型证书后,双击,导入电脑(有可能不需要导入电脑)。
 
把转换好的cer文件拖动到工程中。
 
上代码:
let configuration = URLSessionConfiguration.default
        configuration.httpAdditionalHeaders = Manager.defaultHTTPHeaders
 
        let path: String = Bundle.main.path(forResource: "xxx", ofType: "cer") ?? ""
        let certificationData = try? Data(contentsOf: URL(fileURLWithPath: path)) as CFData
 
        let certificate = SecCertificateCreateWithData(nil, certificationData!)
        let certificates: [SecCertificate] = [certificate!]
 
        let policies: [String: ServerTrustPolicy] = ["domain": ServerTrustPolicy.pinCertificates(certificates: certificates, validateCertificateChain: true, validateHost: true)]
 
        let manager = Manager(configuration: configuration, serverTrustPolicyManager: ServerTrustPolicyManager(policies: policies))
 
最后把manager当参数传递给MoyaProvider
例如:
MoyaProvider<MultiTarget>(endpointClosure: endpoint,
                                                 requestClosure: requestEndpoint,
                                                 stubClosure: stubClosure,
                                                 manager: manager,
                                                 plugins: plugins)

Moya https配置方法的更多相关文章

  1. haproxy代理https配置方法【转】

    记得在之前的一篇文章中介绍了nginx反向代理https的方法,今天这里介绍下haproxy代理https的方法: haproxy代理https有两种方式:1)haproxy服务器本身提供ssl证书, ...

  2. 企业网站的SSL签证生产测试以及https配置方法

    这一次要做企业网站怎么获得安全的数字证书,没有数字证书的话,在浏览器访问网站的时候会跳出不安全界面,而且钓鱼网站也会让用户进去个假网站,一般企业可以去阿里云去买数字证书,买好之后浏览器便会加载这个数字 ...

  3. iis7 https配置方法并且http跳转https

    操作场景 本文档指导您如何在 IIS 中安装 SSL 证书. 说明: 本文档以证书名称 www.domain.com 为例. 本文档以操作系统 Windows10 为例.由于操作系统的版本不同,详细操 ...

  4. (转)Nginx的https配置记录以及http强制跳转到https的方法梳理

    Nginx的https配置记录以及http强制跳转到https的方法梳理 原文:http://www.cnblogs.com/kevingrace/p/6187072.html 一.Nginx安装(略 ...

  5. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  6. CentOS防火墙iptables的配置方法详解

    CentOS系统也是基于linux中的它的防火墙其实就是iptables了,下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助. iptables是与Linux ...

  7. docker网络配置方法总结

    docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...

  8. 前端优化:RequireJS Optimizer 的使用和配置方法

    RequireJS Optimizer 是 RequireJS 自带的前端优化工具,可以对 RequireJS 项目中的 JavaScript & CSS 代码使用 UglifyJS 或者 C ...

  9. 常见的HTTPS攻击方法

    0x00 背景 研究常见的https攻击方法 Beast crime breach,并针对https的特性提出一些安全部署https的建议. 针对于HTTPS的攻击,多存在于中间人攻击的环境中,主要是 ...

随机推荐

  1. Kafka知识总结

    1.kafka是什么 类JMS消息队列,结合JMS中的两种模式,可以有多个消费者主动拉取数据,在JMS中只有点对点模式才有消费者主动拉取数据. kafka是一个生产-消费模型. Producer:生产 ...

  2. Element-ui表格选中回显

    先瞄一下,是不是你要的效果 然后,废话不多说,直接上代码啦 <template> <div class> <div class="projectData&quo ...

  3. HATEOAS约束

    HATEOAS(Hypermedia as the engine of application state)是 REST 架构风格中最复杂的约束,也是构建成熟 REST 服务的核心.它的重要性在于打破 ...

  4. 浏览器中打开PDF链接

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. day2作业

    购物车(两个程序)用户入口1商品信息存在文件里2已购商品,余额记录商家入口2可以添加商品,修改商品价格

  6. element-ui <el-date-picker> 回显格式 yyyy-MM-dd 传值格式 yyyyMMddHHmmss

    <template> <!-- 需求:使用 <el-date-picker> 日期插件 前端显示2018-10-22 后台需要传时间戳,对这个日期插件不熟悉,当时搞了好长 ...

  7. mysql 联合表(federated)及视图

    1)验证环境 源库:192.168.8.75 centos 7.5 mysql8.3 目标库:192.168.8.68 redhat 6.8 mysql5.7 2)登录源库并创建源表 $ mysql ...

  8. typescript初入门

    1.通过npm安装 typescript 进入终端窗口安装typescript: npm install -g  typescript 查看typescript版本号: tsc -v 2.编译代码:t ...

  9. SpringBoot是什么,可以做什么?

    SpringBoot简析 1.SpringBoot是什么?    在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring.SpringMvc框架等,Spring的核心内容在于控制反转( ...

  10. 正则--test exec search match replace

    1:test 是正则对象的方法不是字符串的方法,使用例子:正则对象也就是那个设定好的模式对象 var str = "hello world!"; var result = /^he ...