validation服务器是否符合Apple的ATS / TLS 1.2要求的最佳方法

因此,苹果公司要求TLS 1.2的前向保密function适用于iOS 9开始的URL。独立于应用程序,validation服务器是否满足所有要求的最佳方法是什么?

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

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

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

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

基本上, nscurl --ats-diagnostics <url>只是尝试连接到服务器的所有可能的变体和每个testing的通过/失败结果的响应。 你应该find你的服务器通过哪些testing并相应地设置ATSconfiguration。

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

这里列出的所有方法都可以工作,但需要一些手工操作。 我发现最好的方法是用SSL实验室testing服务器,并将结果与​​Apple的要求进行比较。 这似乎是可以自动化的东西,所以我创build了一个工具,可以做到这一点: https : //apptransport.info

如果你通过你的域作为参数(例如https://apptransport.info/craigslist.com ),你会得到以下信息:

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

方法1:

如果您要testing的URL是可公开访问的,则可以使用下面的公共SSLtesting服务:

SSL服务器testing

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

方法二:(这也是别人提到的)

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

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

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

方法3:

对于不可公开访问的URL,请使用Wireshark监视与URL的通信。 您可以使用Wireshark筛选器仅显示具有以下内容的TLSv1.2数据包:

 ssl.record.version == 0x0303 

如果服务器已configuration为TLS版本1.2,您将看到使用TLSv1.2协议的数据包。 如果您在监视进入URL的请求时只看到一个客户端Hello数据包,则说明移动设备和URL之间没有协商TLSv1.2。

wireshark_screenshot

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

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

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

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