苹果实施ATS安全标准推迟已成不争的事实,但苹果实施ATS的步伐仍旧在前进。ATS App Transport Security(ATS) 是Apple为增强iOS App网络通信安全提出的安全功能,适用于IOS App和App Extension;在启用ATS之后,它会强制应用通过HTTPS(而不是HTTP)连接网络服务器。
App Transport Security(ATS) 是Apple为增强iOS App网络通信安全提出的安全功能,适用于IOS App和App Extension;在启用ATS之后,它会强制应用通过HTTPS(而不是HTTP)连接网络服务。
1.1 ATS属性配置
在App的Info.plist中进行ATS相关属性配置,ATS相关NSAppTransportSecurity如下,所有属性都是可选的,更详细的属性配置说明可参考ATS Dictionary Details。
NS App Transport Security : Dictionary {
NS Allows Arbitrary Loads : Boolean
NS Allows Arbitrary Loads For Media : Boolean
NS Allows Arbitrary Loads In Web Content : Boolean
NS Allows Local Networking : Boolean
NS Exception Domains : Dictionary {
<domain-name-string> : Dictionary {
NS Includes Sub domains : Boolean
NS Exception Allows Insecure HTTP Loads : Boolean
NS Exception Minimum TLS Version : String
NS Exception Requires Forward Secrecy : Boolean
NS Requires Certificate Transparency : Boolean
}
}
}
NS Exception Domains,配置特定域名的ATS访问属性;
NS Includes Sub domains,默认值为NO,置为YES后,该域名的ATS配置适用于其子域名;
NS Exception Allows Insecure HTTP Loads,默认值为NO,置为YES后,该域名可通过HTTP请求访问但TLS版本要求不会改变;
NS Exception Minimum TLS Version,默认值为TLSv1.2,设置该域名支持的TLS最低版本,有效值:TLSv1.0、TLSv1.1和TLSv1.2;
NS Exception Requires Forward Secrecy,默认值为YES,置为NO后,访问该域名时TLS ciphers可以不支持完全正向保密(PFS);
NS Requires Certificate Transparency,默认值为NO,置为YES后,访问该域名时服务器证书需要有效的SCT(signed Certificate time stamps)。
【注意】NS Allows Arbitrary Loads、NS Allows Arbitrary Loads For Media、NS Allows Arbitrary Loads In Web Content和NS Exception Allows Insecure HTTP Loads任一属性置为YES或设置NS Exception Minimum TLS Version,都会触发App Store的额外审核并需要提交对应说明。
1.2 ATS适用范围
经测试,基于IP访问的HTTP请求(使用NS URL Connection/NS URL Session),在IOS 9系统上受ATS限制;但在IOS 10系统上不受ATS限制,可以正常访问。
2.1 HTTPS要求
当ATS要求全部使能时,HTTPS网络连接需要满足下面要求:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
2.2 证书透明
2.3 App Store审核政策
NSAllowsArbitraryLoadsNSAllowsArbitraryLoadsForMediaNSAllowsArbitraryLoadsInWebContentNSExceptionAllowsInsecureHTTPLoadsNSExceptionMinimumTLSVersion
Apple官方给出的可以通过审核的声明demo如下:
由于Apple官方并没有给出ATS审核的完整说明,ATS审核时什么才是合适合理的声明也没有明确的客观定义,以上demo描述仅能作为参照;为保险起见,建议尽快按照Apple要求进行HTTPS适配。
3.1 上层网络API适配
使用Apple上层网络API(NS URL Connection/NS URL Session)的HTTP访问,
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时,
GDCA(数安时代)旗下的SSL证书产品全面支持苹果ATS安全标准,符合ATS安全标准的HTTPS设置,是国内SSL证书部署HTTPS安全协议的首选。
标签: 苹果ATS Apple ATS 苹果https上一篇:深入认识苹果ATS安全标准,备战IOS App Stroe审核
下一篇:正确部署HTTPS协议,快速通向苹果ATS标准