自2017年1月1日起,根据苹果要求,所有 iOS 应用必须使用 ATS(App Transport Security),即 iOS 应用内的连接必须使用安全的 HTTPS 连接。同时,苹果要求使用的不仅是一个简单的 HTTPS 协议连接,而且必须要满足 iOS9 中的新增特性。

本文介绍苹果ATS环境ssl证书安装,苹果 ATS 针对 HTTPS 协议包含以下四个方面的要求:
证书颁发机构的要求
- 建议您使用 DigiCert、Symantec、GeoTrust 品牌的 OV 型及以上数字证书,易维信出售的所有ssl都符合要求。
- 对于个人用户,建议使用 DV 型数字证书,不推荐使用免费证书。
- CFCA 品牌的数字证书只在最新的苹果设备上才支持,因此不推荐选择 CFCA 品牌。
证书的哈希算法和密钥长度的要求
哈希算法
上述推荐的证书品牌中是使用的哈希算法都是 SHA256 或者更高强度的算法,符合 ATS 的要求。
密钥长度
- 如果您选择使用系统创建 CSR 的方式,系统生成的密钥采用的是 2048 位的 RSA 加密算法,完全符合 ATS 的要求。
- 如果您选择自己创建CSR文件,请确保使用 2048 位或以上的 RSA 加密算法。
传输协议的要求
传输协议必须满足 TLS1.2。需要在 Web 服务器上开启 TLSv1.2,通常要求:
- 基于 OpenSSL 环境的 Web 服务器,需要使用 OpenSSL 1.0 及以上版本,推荐使用 OpenSSL 1.0.1 及以上版本。
- 基于 Java 环境的 Web 服务器,需要使用 JDK 1.7 及以上版本。
- 其他 Web 服务器,除 IIS7.5 以及 Weblogic 10.3.6 比较特殊外,只要 Web 服务版本满足,默认均开启 TLSv1.2。
详细 Web 服务器配置要求说明如下:
- Apache 、 Nginx Web 服务器需要使用 OpenSSL 1.0 及以上版本来支持 TLSv1.2。
- Tomcat 7 及以上版本 Web 服务器需要使用 JDK 7.0 及以上版本来支持 TLSv1.2。
- IIS 7.5 Web 服务器默认不开启 TLSv1.2,需要修改注册表以开启 TLSv1.2。
下载并导入 ats.reg 注册表脚本后,重启(或注销)服务器,即可使 TLSv1.2 生效。 - IBM Domino Server 9.0.1 FP3 Web 服务器支持 TLSv1.2。根据 ATS 要求,建议使用IBM Domino Server 9.0.1 FP5 版本。更多信息请参考:
- IBM HTTP Server 8.0 及以上版本支持 TLSv1.2。根据 ATS 要求,建议使用 IBM HTTP Server 8.5 及以上版本。
- Weblogic 10.3.6 及以上版本 Web 服务器需要使用 Java7 及以上版本来支持TLSv1.2。
注意:Weblogic 10.3.6 中存在多个 SHA256 兼容问题,建议最低使用 Weblogic 12 版本,或为 Weblogic 10.3.6 配置前端 Apache 或 Nginx 的 HTTPS 代理或 SSL 前端负载。 - Webspere V7.0.0.23及以上版本、Webspere V8.0.0.3及以上版本、Webspere V8.5.0.0 及以上版本支持 TLSv1.2。关于如何配置 Webspere 服务器支持TLSv1.2,请参考 Configure websphere application server SSL protocol to TLSv1.2。
签字算法的要求
签字算法必须满足如下算法要求:
- 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
配置示例
以下通过举例方式说明不同 Web 服务器的 ATS 协议及加密套件应该如何配置:注意: 示例中只列举了与 ATS 协议有关的属性,请不要完全复制以下配置用于您的实际环境。
Nginx 配置文件片段
Nginx 配置文件中 ssl_ciphers 及 ssl_protocols 属性与 ATS 协议有关。
server {
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
Tomcat 配置文件片段
Tomcat 配置文件中的 SSLProtocol 及 SSLCipherSuite 属性与 ATS 协议有关。
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
scheme="https" secure="true"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4" />
IIS 系列 Web 服务器的配置方法请参考 Enabling TLS 1.2 on IIS 7.5 for 256-bit cipher strength。您也可以使用 IIS Crypto 可视化配置插件进行配置。
ATS 检测工具
您可在苹果电脑中使用系统自带的工具进行ATS检测,执行以下命令即可:
nscurl --ats-diagnostics --verbose 网址