苹果ATS证书的选择及配置

自2017年01月01日起,根据苹果公司要求,所有iOS应用必须使用ATS(App Transport Security),即iOS应用内的连接必须使用安全的HTTPS连接。

说明

阿里云CDN、传统型负载均衡CLB(原SLB)服务中的HTTPS配置完全符合ATS的要求。

证书配置要求

苹果ATS针对证书相关配置有如下四个方面的要求。

项目

具体要求

证书颁发机构

  • 对于企业用户,建议使用DigiCert、GeoTrust品牌的OV或EV型数字证书。

  • 对于个人用户,建议使用DV型正式证书。

  • CFCA品牌的数字证书只在最新的苹果设备上才支持,因此不推荐您选择CFCA品牌。

证书的哈希算法和密钥长度

  • 哈希算法:上述推荐的证书品牌使用的哈希算法都是SHA256或者更高强度的算法,符合ATS的要求。

  • 密钥长度:

    • 如果您选择使用系统生成CSR的方式,系统生成的密钥采用的是2,048位的RSA加密算法,完全符合ATS的要求。

    • 如果您选择手动填写CSR文件,请确保使用2,048位或以上的RSA加密算法。

传输协议

您Web服务器上的传输协议必须满足TLSv1.2,需要您在Web服务器上开启TLSv1.2,要求如下:

  • 基于OpenSSL环境的Web服务器,需要您使用OpenSSL 1.0及以上版本,推荐您使用OpenSSL 1.0.1及以上版本。

  • 基于Java环境的Web服务器,需要您使用JDK 1.7及以上版本。

  • 其他Web服务器,除IIS 7.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 SSL Server Questions and Answers

  • IBM HTTP Server 8.0及以上版本支持TLSv1.2。根据ATS要求,建议您使用IBM HTTP Server 8.5及以上版本。

  • Weblogic 10.3.6及以上版本Web服务器需要您使用Java 7及以上版本来支持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协议有关。

重要

参考以下示例配置ssl_protocols参数时,您需要自行评估是否使用TLSv1.1。

server {
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
}

Tomcat配置文件片段

Tomcat配置文件中的SSLProtocol及SSLCipherSuite属性与ATS协议有关。

重要

参考以下示例配置SSLProtocol参数时,您需要自行评估是否使用TLSv1.1。

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
scheme="https" secure="true"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1.1+TLSv1.2+ TLSv1.3"
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检测工具

您可以在苹果电脑中使用系统自带的工具执行nscurl --ats-diagnostics --verbose <网址>命令进行ATS检测。