• iOS应用将强制使用HTTPS安全加密-afn配置https(190926更新)


    WWDC 2016苹果开发者大会上,苹果在讲解全新的iOS10中提到了数据安全这一方面,并且苹果宣布iOS应用将从2017年1月起启用名为App Transport Security的安全传输功能。

    2017年所有iOS应用必须支持ATS安全标准,将强制使用HTTPS安全连接;

    为什么强制使用ATS 安全标准?

    ATS 安全标准是苹果在发布 iOS 9 和 OS X EI Capitan 系统时发布的,这一标准通过强行推动一系列安全实际操作,从而积极促进安全性,同时还要求网络请求必须在一个安全的链接上传输,当开启 ATS 之后,网络传输将自动通过 HTTPS 协议传输而不是 HTTP 协议。启用HTTPS网络连接之后,数据传输的安全性将大幅提示,不容易被黑客拦截破译。 

    强制使用ATS 安全标准将会在 2017 年 1 月 1 日开始,苹果公司称,HTTPS安全标准将会确保我们的个人信息免遭意外泄露,确保应用默认遵守行为安全规范。

    什么是HTTPS?

    HTTPS就是http+SSL,简单地说就是在http协议的基础上开启一条SSL加密通道,让原本“裸奔”的数据,从加密通道中密文传输,保证了数据传输的安全性,服务器安装SSL证书,就可以激活SSL加密通道,实现https加密传输。如今,ATS 安全标准都会在苹果的开发工具打开,不过很多开发商已经停止使用安全功能。要知道如今 App Store 已经拥有超过 200 万个应用,而应用的下载量早已经超过了 1300 亿次,很显然,一个安全的 App Store 是我们每个人都非常需要。建议开发者不要简单地禁用ATS,而应该升级服务器的配置支持ATS,为用户提供更安全的服务。

    天威诚信SSL证书助您快速升级https

    APP应用按ATS要求升级为HTTPS其实并不复杂,天威诚信可提供Symantec 旗下全线数字证书产品。天威诚信拥有15年SSL认证经验, 2000年天威诚信将Symantec证书业务引入中国,开始为中国区客户提供SSL认证服务。是symantec在中国区合作时间最长、合作范围最广、合作层级最高的白金战略合作伙伴。天威诚信拥有最优秀的本土化服务团队, 可为您提供7×24小时专业技术服务。让您享受到最快捷,最全面,最安心的认证服务。

     

    我的项目最近(1909)也要配置https

    现在把过程记录,以方便大家参考

    1.后台会给你一个.crt 证书文件 或者 直接给一个 .cer 文件

    如果给的是.crt 那么需要将 .crt 双击放入钥匙串,导出.cer  再将钥匙串里面的.crt 删除

    2. 将生成的.cer 拖入到工程的你想放入的文件夹的下面,Build Phases->Copy Bundle Resources中加入刚才的证书

    3. afn的代码中需要加入这些

        配置https的时候改的这句

            NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

            _httpsessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:BasePathScope] sessionConfiguration:configuration];//比如你的 域名是www.baidu.com 那么  BasePathScope 要写成  https://www.baidu.com

            [_httpsessionManager setSecurityPolicy:[self customSecurityPolicy]];

    + (AFSecurityPolicy *)customSecurityPolicy {

        

        // 先导入证书 证书由服务端生成,具体由服务端人员操作

        NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"XXXX" ofType:@"cer"];//证书的路径 xx.cer

        // 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;

        

        securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:cerData, nil];

        return securityPolicy;

    }

    如此一来我的项目就好了。  并没有用到info里面配置白名单

    参考链接

    https://www.jianshu.com/p/8c128d9c9681

    https://www.jianshu.com/p/c8619181907c

  • 相关阅读:
    mybatis的分页插件pagehelper的使用
    SSM框架中添加事务
    junit测试,spring中使用
    maven的聚合和继承,maven的依赖
    shiro的角色和权限
    tomcat配置虚拟文件路径
    通过HttpServletRequest的request获取各种路径
    shiro学习一
    JDBC
    GUI
  • 原文地址:https://www.cnblogs.com/isItOk/p/5838216.html
Copyright © 2020-2023  润新知