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 ),你会得到以下信息:
- 无论您的服务器是否符合ATS标准
- 如有必要,如何修复您的服务器
- 如有必要,如何添加ATS例外
- 结果来自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。
使用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>
- animationControllerForPresentedController和animateTransition之间的自定义过渡animation未知延迟
- 合并2个分支时Xcode 6.0.1崩溃