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

猜你喜欢

转载自www.cnblogs.com/yuwei0911/p/9269450.html
今日推荐