2017 年 1 月 1 日开始,苹果要求所有 iOS 应用必须使用 ATS(App Transport Security),即 APP 内连接必须使用安全的 HTTPS。并不简单是一个 HTTPS 协议,而且要满足 iOS9 中新增特性。
包括如下几点:
1、证书颁发机构的要求
2、传输协议的要求
3、签字算法的要求
4、证书的哈希算法和秘钥长度的要求
其中 2 和 3 属于证书的安装和配置问题,稍后说一下。先说 1 和 4 的要求。
证书颁发机构: 推荐用 Symantec/GeoTrust 品牌的 OV 及以上证书,个人用户可签发 DV 证书。而 CFCA 品牌只在最新的苹果设备上才支持,不推荐 CFCA 品牌。不推荐使用免费证书;
证书的哈希算法:在上面推荐的证书品牌中是哈希算法都是 SHA256 或者更高强度的算法;
秘钥长度: 如果选择使用系统创建 CSR 方式,密钥是 2048 位的 RSA 加密算法,完全符合要求;如果自己创建 CSR,请使用 2048 位或以上的 RSA 加密算法;
传输协议: 必须满足 TLS1.2
要在服务器上开启 TLSv1.2,通常要求基于 OpenSSL 环境的,使用 OpenSSL 1.0+ ,推荐 OpenSSL 1.0.1+。
要求基于 Java 环境的,使用 Jdk 1.7+ 。
其他 Web Server,除 IIS7.5 以及 Weblogic 10.3.6 较为特殊外,只需版本满足,默认均开启 TLSv1.2。详情如下:
-
Apache / Nginx 依赖 OpenSSL 1.0 + 以支持 TLSv1.2.
-
Tomcat 7 + Jdk 7.0 + 支持 TLSv1.2
-
IIS7.5 默认未开启 TLSv1.2 需修改注册表以开启 TLSv1.2。导入附件的 ats.reg 注册表脚本后,重启(或注销)服务器,以使 TLSv1.2 生效。
-
IBM Domino Server 9.0.1 FP3 支持 tls1.2 ATS 建议 9.0.1 FP5。https://www-10.lotus.com/ldd/dominowiki.nsf/dx/TLS_Cipher_Configuration#TLS+1.2%3Ahttp://publib.boulder.ibm.com/httpserv/ihsdiag/ssl_questions.html
-
IBM Http Server 8.0+ 支持 TLS1.2 ,适配 ATS 建议使用 8.5+
-
weblogic10.3.6+ java7+ 支持 tls1.2。Weblogic 10.3.6 存在多个 SHA256 兼容 bug,建议应最低使用 Weblogic 12 版本,或为 Weblogic 10.3.6 配置前端 Apache 或 Nginx 的 https 代理(或 SSL 前端负载)。
-
webspere V7.0.0.23+ V8.0.0.3+ V8.5.0.0+ 支持 TLsv1.2。https://developer.ibm.com/answers/questions/206952/how-do-i-configure-websphere-application-server-ss.html
签字算法: 必须满足如下算法
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
以下举例不同服务器的 ATS 协议及加密套件如何配置(只列举了与 ATS 有关的属性,请不要完全复制以下配置)
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;
}
Apache 配置文件中的片段(SSLProtocol/SSLCipherSuite 属性与 ATS 有关)
mod_ssl.c>
*:443>
SSLProtocol TLSv1 TLSv1.1 TLSv1.2
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4
- ``
Tomcat 配置文件中的片段(SSLProtocol/SSLCipherSuite 属性与 ATS 有关)
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 系列的配置最佳实践正在整理中,先推荐两篇文章供参考
Enabling TLS 1.2 on IIS 7.5 for 256-bit cipher strength | Jack Stromberg
一个可视化界配置插件
阿里云的 CDN、SLB 业务的 HTTPS 配置完全符合 ATS 的要求。
ATS 检测工具:
苹果电脑可以用自带的工具进行检测,命令如下:
nscurl --ats-diagnostics --verbose 网址
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于