验证服务器符合Apple的ATS / TLS 1.2要求的最佳方法

时间:2015-12-23 22:07:49

标签: ios ssl tls1.2 app-transport-security

因此Apple要求TLS 1.2具有针对iOS 9开始的URL的前向保密性。独立于应用程序,验证服务器是否满足所有要求的最佳方法是什么?

直接无法工作 - 或者我不知道如何使用它。我的输出只是反复说CFNetwork SSLHandshake失败了,即使我知道服务器是合规的。

TLSTool在某种程度上起作用,但我不能强制使用前向保密(FS)密码。

openssl可以为客户端模式指定特定的密码,但我的版本没有FS密码。如何升级openssl?

最好的方法是什么?到目前为止,我已经不得不使用ssllabs.com的analyze.html。有什么建议吗?

4 个答案:

答案 0 :(得分:40)

基本上nscurl --ats-diagnostics <url>只尝试所有可能的服务器连接变体和每个测试的PASS / FAIL结果的响应。您应该找到为您的服务器传递的测试并相应地设置ATS配置。

Here's关于ATS和检查服务器合规性的好文章,它还包含一个nscurl示例。

答案 1 :(得分:12)

此处列出的所有方法都有效,但需要一些手工操作。我找到的最好的方法是使用SSL Labs测试服务器,并将结果与​​Apple的要求进行比较。这看起来像是可以自动化的东西,所以我创建了一个可以做到这一点的工具:https://apptransport.info

如果您将域名作为参数传递(例如https://apptransport.info/craigslist.com),您将获得以下信息:

  1. 您的服务器是否符合ATS
  2. 如有必要,如何修复服务器
  3. 如有必要,如何添加ATS例外
  4. 来自SSL实验室的结果

答案 2 :(得分:2)

使用nscurl(可在macOS El Capitan及更高版本中使用),您可以使用--ats-tls-version开关专门测试TLS 1.2合规性,例如:

nscurl --ats-diagnostics --ats-tls-version TLSv1.2 <url>

这也将测试Perfect Forward Secrecy。如果要禁用PFS测试,请使用--ats-disable-pfs开关。

nscurl --ats-diagnostics --ats-tls-version TLSv1.2 --ats-disable-pfs <url>

答案 3 :(得分:1)

方法1:

如果要测试的网址可公开访问,您可以使用下面的公共SSL测试服务:

SSL Server Test

输入URL后,标题为“握手模拟”的部分列出“Apple ATS 9 / iOS 9”,并指示是否已成功协商TLS 1.2以及使用了哪个连接密码套件。如果下面列出了技术ATS要求下使用的密码套件并且TLS 1.2已成功协商,则服务器已针对ATS进行了正确配置。

方法2:(其他人也提到了这一点)

在运行OS X El Capitan的Mac上,在终端中运行以下命令:

/usr/bin/nscurl --ats-diagnostics https://<url>

运行命令后,查找标记为ATS Default Connection的顶部附近的部分。 PASS的结果表示服务器已针对ATS正确配置。

方法3:

对于无法公开访问的网址,请使用Wireshark来监控与网址的通信。您可以使用Wireshark过滤器仅显示具有以下内容的TLSv1.2数据包:

ssl.record.version == 0x0303

如果服务器已配置为TLS 1.2版,您将看到使用TLSv1.2协议的数据包。如果您在监控进入URL的请求时只看到Client Hello数据包,则移动设备和URL之间未协商TLSv1.2。

wireshark_screenshot