苹果 ATS - 证书选择及配置

本贴最后更新于 2757 天前,其中的信息可能已经时过境迁

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。详情如下:

  1. Apache / Nginx 依赖 OpenSSL 1.0 + 以支持 TLSv1.2.

  2. Tomcat 7 + Jdk 7.0 + 支持 TLSv1.2

  3. IIS7.5 默认未开启 TLSv1.2 需修改注册表以开启 TLSv1.2。导入附件的 ats.reg 注册表脚本后,重启(或注销)服务器,以使 TLSv1.2 生效。

  4. 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

  5. IBM Http Server 8.0+ 支持 TLS1.2 ,适配 ATS 建议使用 8.5+

  6. weblogic10.3.6+ java7+ 支持 tls1.2。Weblogic 10.3.6 存在多个 SHA256 兼容 bug,建议应最低使用 Weblogic 12 版本,或为 Weblogic 10.3.6 配置前端 Apache 或 Nginx 的 https 代理(或 SSL 前端负载)。

  7. 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

签字算法: 必须满足如下算法

  1. TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  2. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  3. TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  4. TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  5. TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  6. TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  7. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  8. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  9. TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  10. TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  11. TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

以下举例不同服务器的 ATS 协议及加密套件如何配置(只列举了与 ATS 有关的属性,请不要完全复制以下配置

Nginx 配置文件中的片段(ssl_ciphers/ssl_protocols 属性与 ATS 有关)

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

Apache 配置文件中的片段(SSLProtocol/SSLCipherSuite 属性与 ATS 有关)

  1. mod_ssl.c>
  2. *:443>
  3. SSLProtocol TLSv1 TLSv1.1 TLSv1.2
  4. SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4
  5. ``

Tomcat 配置文件中的片段(SSLProtocol/SSLCipherSuite 属性与 ATS 有关)

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

一个可视化界配置插件

Nartac Software - Download

阿里云的 CDN、SLB 业务的 HTTPS 配置完全符合 ATS 的要求。

ATS 检测工具:

苹果电脑可以用自带的工具进行检测,命令如下:

nscurl --ats-diagnostics --verbose 网址

  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 416 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖 • 1 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 2 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 50 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    946 引用 • 943 回帖
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    7 引用 • 40 回帖
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    409 引用 • 1246 回帖 • 587 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 391 回帖
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖
  • 自由行
    4 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 588 回帖
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖 • 4 关注
  • 导航

    各种网址链接、内容导航。

    42 引用 • 175 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    288 引用 • 4485 回帖 • 663 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 3 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 147 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 2 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 26 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 221 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 666 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 724 关注
  • 996
    13 引用 • 200 回帖 • 11 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1235 回帖 • 410 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    492 引用 • 926 回帖