验证服务器是否符合 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 测试服务,如下所示:
输入 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),您将获得以下信息:
- 您的服务器是否兼容 ATS
- 必要时如何修复服务器
- 必要时如何添加 ATS 例外
- SSL 实验室的结果
因此 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 测试服务,如下所示:
输入 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),您将获得以下信息:
- 您的服务器是否兼容 ATS
- 必要时如何修复服务器
- 必要时如何添加 ATS 例外
- SSL 实验室的结果