我就简单是说下关于iOS 10 适配HTTPS--info.plist配置里的相关Key的做用。web
一般的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]];网络
});app
/** https */框架
NSString*cerPath = [[NSBundle mainBundle] pathForResource:@"xxxxx.cn.cer"ofType:nil];dom
NSData*cerData = [NSData dataWithContentsOfFile:cerPath];ui
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