ATS说明文档

概述

App Transport Security,简称 ATS,是苹果在 iOS 9 当中首次推出的一项安全功能。在启用 ATS 之后,它会强制应用通过 HTTPS(而不是 HTTP)连接网络服务,这能够通过加密来保障用户数据安全。苹果公司强制iOS App在2017年1月1日前使用HTTPS加密,这就意味着,如果您的APP如果仍采用HTTP传输,那么,在Apple Store中您的APP将不再能被用户下载使用。2017 年 1 月 1 日——即 App Store 当中的所有应用必须启用 App Transport Security (ATS)安全功能。

注意事项 Requirements
  1. ATS 完全开启的情况下,系统要求 app HTTPS 连接必须满足以下要求:
  • X.509 数字证书必须满足下列标准中的一项:

    • 由操作系统内嵌的根证书颁发机构签发
    • 由通过操作系统管理员或用户主动安装的根证书颁发机构签发
  • TLS 版本必须为1.2,任何不使用或使用较低版本 TLS / SSL 的连接,都将失败。

  • 连接必须使用 AES-128 或 AES-256 对称加密算法。 TLS 算法套装必须以 ECDSA 密钥交换的形式支持正向保密,加密算法必须为下面之一:

    • 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
  • 服务端的叶证书签名密钥必须为下面之一:

    • 至少2048位的 RSA 密钥
    • 至少256位的 ECC 密钥此外,服务器证书的哈希算法必须为 SHA-2,其摘要长度至少位256位(即 SHA-256 及以上)
for开发者

1、APP与后台的通讯改为HTTPS。

2、所申请的证书必须是iOS系统内嵌的证书颁发机构签发的。 可参考https://support.apple.com/zh-cn/HT207177

3、AppCan平台应用:APP在打包的时候需要选择开启ATS功能。(即云端打包->ATS配置/自定义ATS配置)

4、AppCan平台应用:须第三方sdk支持ATS(其他插件都支持),官方API针对相关插件已完成版本升级支持ATS,开发者需要更新项目所用插件版本(可后续关注文档中心插件更新日志)选择打包。

5、小贴士:利用nscurl这个命令行工具,检测一个URL地址是否支持ATS。用法如下:/usr/bin/nscurl —ats-diagnostics [—verbose] URL

自定义ATS配置
  • 对于应用服务器的API请求,必须使用HTTPS。如果使用的是第三方的API,而他们没有提供HTTPS支持的话,需要在NSExceptionDomains中添加。

  • 若App中存在使用WebView浏览网站的请求,而网站并未提供HTTPS,可以配置NSAllowsArbitraryLoads:YES & NSAllowsArbitraryLoadsInWebContent:YES。

ATS配置文件可在线进行个性化设置(即云端打包配置,参考在线编辑配置模板),请参考苹果官网文档里介绍。