易维信(EVTrust)数字证书

  SSL证书咨询   SSL证书咨询
  SSL证书咨询   SSL证书咨询
400-86365-00
  • QQ在线咨询:
首页>业界新闻>苹果ATS+HTTPS深度解析

苹果ATS+HTTPS深度解析

About ATS

App Transport Security(ATS) 是Apple为增强iOS App网络通信安全提出的安全功能,适用于iOS App和App Extension.在启用ATS之后,APP会被强制通过HTTPS方式连接网络服务,屏蔽通过HTTP协议的文件传输,这仅是App Store审核策略的变更。

1.1 ATS属性配置

NSAllowsArbitraryLoads,默认值为NO,置为YES后,所有网络请求不受ATS的限制;

NSAllowsArbitraryLoadsForMedia,默认值为NO,置为YES后,使用AV Foundation框架载入资源时不受ATS的限制;(iOS 10.0及以上支持,测试发现真机可行,模拟器未起作用)

NSAllowsArbitraryLoadsInWebContent,默认值为NO,置为YES后,使用web view的网络请求不受ATS限制;(iOS 10.0及以上支持)

NSAllowsLocalNetworking,默认值为NO,置为YES后,本地网络请求不受ATS限制;(iOS 10.0及以上支持)

NSExceptionDomains,配置特定域名的ATS访问属性:

NSIncludesSubdomains,默认值为NO,置为YES后,该域名的ATS配置适用于其子域名;

NSExceptionAllowsInsecureHTTPLoads,默认值为NO,置为YES后,该域名可通过HTTP请求访问但TLS版本要求不会改变;

NSExceptionMinimumTLSVersion,默认值为TLSv1.2,设置该域名支持的TLS最低版本,有效值:TLSv1.0、TLSv1.1和TLSv1.2;

NSExceptionRequiresForwardSecrecy,默认值为YES,置为NO后,访问该域名时TLS ciphers可以不支持完全正向保密(PFS);

NSRequiresCertificateTransparency,默认值为NO,置为YES后,访问该域名时服务器证书需要有效的SCT(signed Certificate timestamps)。

【注意】NSAllowsArbitraryLoads、NSAllowsArbitraryLoadsForMedia、NSAllowsArbitraryLoadsInWebContent和NSExceptionAllowsInsecureHTTPLoads任一属性置为YES或设置NSExceptionMinimumTLSVersion,都会触发App Store的额外审核并需要提交对应说明。

1.2 ATS适用范围

NSURLConnection/NSURLSession相关及任何基于此的上层API;

经测试,基于IP访问的HTTP请求(使用NSURLConnection/NSURLSession),在iOS 9系统上受ATS限制;但在iOS 10系统上不受ATS限制,可以正常访问。

iOS 9.0+系统支持,低于iOS 9.0系统忽略NSAppTransportSecurity的配置。

使用Apple底层网络API或第三方网络库API,不受ATS限制。

ATS+HTTPS要求

2.1 HTTPS要求

当ATS要求全部使能时,HTTPS网络连接需要满足下面要求:

X.509证书必须至少满足下面一种条件:

由根证书是操作系统安装的CA颁发;

由用户或系统管理员信任并安装的根证书颁发;

TLS版本必须为TLS 1.2,不使用TLS或使用老版本TLS的连接,访问会失败,基于TLSTool工程可获取服务器支持的TLS相关参数;

连接必须使用AES-128或AES-256对称加密算法,TLS协商算法必须通过ECDHE密钥交换保证完全正向保密(Perfect Forward Secrecy, PFS),ECDHE密钥必须属于下面一种:

服务器叶证书必须使用下列的密钥签名:

至少2048位的RSA密钥;

至少256位的ECC密钥;

2.2 证书透明

证书透明(Certificate Transparency)提供一个开放的证书审计和监控系统,提供HTTPS访问的安全性,可参考Certificate Transparency;

HTTPS访问指定域名开启Certificate Transparency后,参照1.1节描述,NSRequiresCertificateTransparency需要置为YES。

2.3 App Store审核政策

目前Apple官方没有系统、完整地说明ATS的审核标准。

上传到App Store要审核的App,若需要放宽ATS的安全限制,配置有NSAllowsArbitraryLoads、NSAllowsArbitraryLoadsForMedia、NSAllowsArbitraryLoadsInWebContent、NSExceptionAllowsInsecureHTTPLoads、NSExceptionMinimumTLSVersion的ATS相关属性,便会触发额外审核,并要求提交声明,说明配置的原因。

ATS的提出,是为了在系统层面保障iOS APP网络通信的安全;Apple只所以加强对ATS配置的审核,是为了防止开发者们遇到ATS相关的场景时,只是简单地将ATS完全关闭(只要没有强制性措施,开发者会这么做);在此基础上,App审核同样会遵循原则:App Review will require "reasonable justification" for most ATS exceptions。

Apple官方给出的可以通过审核的声明demo如下:

必须使用第三方提供的服务,但是其没有支持HTTPS;

必须通过域名连接到设备,但该设备不能支持安全连接;

必须展示不同来源的网页内容,但是不能基于NSAllowsArbitraryLoadsInWebContent支持的类(UIWebView / WKWebView)实现;

载入加密的媒体资源并且其中不涉及个人信息。

由于Apple官方并没有给出ATS审核的完整说明,ATS审核时什么才是合适合理的声明也没有明确的客观定义,以上demo描述仅能作为参照;为保险起见,建议尽快按照Apple要求进行HTTPS适配。

Action总结

3.1 上层网络API适配

使用Apple上层网络API(NSURLConnection/NSURLSession)的HTTP访问,

基于域名访问的请求,需要按照按照2.1节描述进行HTTPS适配;

基于IP访问的请求,在iOS 10系统可以不受ATS限制正常访问,建议同样进行HTTPS适配。

3.2 底层网络API适配

使用Apple底层网络API进行的网络请求无需进行HTTPS适配。

3.3 ATS Exceptions

尽可能地按照要求完成HTTPS的适配,若应用场景必须进行ATS exceptions的配置(比如,浏览器应用必须同时支持HTTP/HTTPS载入、强依赖的第三方服务没有支持HTTPS访问等),保证ATS exceptions配置最小化,App审核时按照2.3节描述给出合理的解释声明。

3.4 ATS支持诊断工具

HTTPS适配完成后,可以先使用/usr/bin/nscurl(OS X v10.11及以上系统支持)工具模拟进行ATS网络连接状况诊断,命令如下:

/usr/bin/nscurl --ats-diagnostics [--verbose] URL

连接指定URL时,

--ats-diagnostics参数的设定,会模拟ATS属性的不同配置场景(NSAllowsArbitraryLoads、NSExceptionMinimumTLSVersion、NSExceptionRequiresForwardSecrecy和NSExceptionAllowsInsecureHTTPLoads的不同组合)进行连接;

--verbose指定时,可显示ATS不同配置场景的详细信息。

深圳市易维信科技服务有限公司   统一客服热线:400-86365-00    销售直线:0755 - 86 522 365   Q Q:86365 1133 、86365 1100 、86365 3311 、86365 9911

Copyright @ 2014-2015 EVTrust All Rights Reserved 粤ICP备14076676号-1