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

Best way for verifying server compliance to Apple's ATS / TLS 1.2 requirement

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

nscurl 完全不起作用 - 或者我不知道如何使用它。我的输出只是重复说 CFNetwork SSLHandshake 失败,即使我知道服务器是兼容的。

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

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

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

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

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

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

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

这也将测试完美前向保密性。如果要禁用 PFS 测试,请使用 --ats-disable-pfs 开关。

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

方法一:

如果您要测试的 URL 是 public 可访问的,您可以使用 public SSL 测试服务,如下所示:

SSL Server Test

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

方法二:(其他人也提到过)

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

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

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

方法三:

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

ssl.record.version == 0x0303

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

之间未协商 TLSv1.2

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

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

  1. 您的服务器是否兼容 ATS
  2. 必要时如何修复服务器
  3. 必要时如何添加 ATS 例外
  4. SSL 实验室的结果