zoukankan      html  css  js  c++  java
  • iOS Https 配置 及AFN 相关配置

    我就简单是说下关于iOS 10 适配HTTPS--info.plist配置里的相关Key的作用。

    通常的https配置在 App Transport Security Settings 里:
    
     Allow Arbitrary Loads (大家都比较熟悉),通常大家都设置成YES,来禁用AST。
    
    如果在今后的App审核中,再设置为YES将会被拒绝。
    
    所以在今后开发者需要自定义网络安全策略,可以允许访问一些不安全的网络环境。
    
     
    #App Transport Security Settings的结构层次
    NSAppTransportSecurity : Dictionary {   
        NSAllowsArbitraryLoads : Boolean   
        NSAllowsArbitraryLoadsInMedia : Boolean   
        NSAllowsArbitraryLoadsInWebContent : Boolean      
        NSAllowsLocalNetworking : Boolean      
        NSExceptionDomains : Dictionary {   
            <domain-name-string> : Dictionary {               
                NSIncludesSubdomains : Boolean   
                NSExceptionAllowsInsecureHTTPLoads : Boolean              
                NSExceptionMinimumTLSVersion : String   
                NSExceptionRequiresForwardSecrecy : Boolean   // Default value is YES               
                NSRequiresCertificateTransparency : Boolean           
                }      
            }  
    }   
    
    
    NSAllowsArbitraryLoadsInMedia (设置为 YES,解除通过 AV Foundation 框架访问媒体内容时的 ATS 限制;启用这个 键,务必确保载入的媒体内容已经被加密,例如受FairPlay保护的文件,或者是安全的 HLS流媒,其中不包含敏感的个人信息。默认为 NO)
    
    NSAllowsArbitraryLoadsInWebContent (设置为 YES,解除通过 web view 发出的网络请求的 ATS 限制。启用这个键,可以使 app 访问任意网页内容,但不影响 app 的总体 ATS 策略。此键值默认为 NO)
    
    NSAllowsLocalNetworking (设置为 YES,使得 app 可以载入任意本地资源,但不影响 app 的总体 ATS 策略。默 认为 NO)
    
    NSExceptionDomains ----对单独域名进行配置
    
    NSIncludesSubdomains ( 设置为 YES,当前域名的 ATS 策略适用于其所有子域名。默认为 NO)
    
     NSExceptionAllowsInsecureHTTPLoads (设置为 YES,可以同时通过 HTTP 和 HTTPS 访问当前域名。默认为 NO。 注意,配置这个键值,将引发 App Store 的审查,开发者必须说明原因)
    
     NSExceptionMinimumTLSVersion (指定 TLS 的最低版本,因此可以使用版本较低,有安全漏洞的 TLS 协议。 注意,配置这个键值,将引发 App Store 的审查,开发者必须说明原因)
    
     NSExceptionRequiresForwardSecrecy ( 设置为 NO,允许针对当前域名使用不支持正向保密的 TLS 加密算法。默认为 YES)
    
     NSRequiresCertificateTransparency (设置为 YES,将验证域名服务器证书的Certificate Transparency时间

       static HttpManagerCenter * _manger = nil;

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            

            _manger = [[HttpManagerCenter alloc]initWithBaseURL:[NSURL URLWithString:APP_DOMIAN]];

        });

        /** https */

        NSString*cerPath = [[NSBundle mainBundle] pathForResource:@"xxxxx.cn.cer"ofType:nil];

        NSData*cerData = [NSData dataWithContentsOfFile:cerPath];

        AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

        securityPolicy.allowInvalidCertificates =YES;

        securityPolicy.validatesDomainName =YES;

        securityPolicy.pinnedCertificates = [NSSet setWithObject:cerData];



    借鉴文章地址:https://www.jianshu.com/p/dc0f72395172

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

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

  • 相关阅读:
    AspDotNetStorefront客户化开始
    "超时时间已到。在操作完成之前超时时间已过或服务器未响应。"另一个原因
    转:只打开一个窗口和关闭窗口而不出现提示
    .net 数据格式设置
    SQLServer导出数据表中数据的存储过程
    游标、临时表、嵌套游标使用一列
    转:将图片转换成16进制的代码写入文本
    根据文件后缀返回Http的ContentType类型的函数
    正确配置p6spy后没有日志输出的一个可能的原因
    C99 声明 + 表达式 + 词法 部分Grammar
  • 原文地址:https://www.cnblogs.com/yuwei0911/p/9269450.html
Copyright © 2011-2022 走看看