【发布时间】:2017-08-08 21:10:06
【问题描述】:
所以我使用的主机最近禁用了 TLS 1.0,所以对于任何不支持 TLS 1.0 的设备,我需要使用 http 而不是 https(无论如何都不会发送任何敏感信息……我只是更喜欢对所有内容使用 SSL在可能的情况下)。
似乎自 API 16 起支持 TLS 1.1/1.2,但自 API 20 或 21 以来默认未启用。关于何时切换默认设置的确切报告存在冲突。参见例如here(来自 API 20 的建议)和here(来自 API 21 的建议)。似乎有些设备甚至在 API 20 之前启用了 TLS 1.1/1.2 支持,可能是因为制造商为了实现这一点而进行了一些调整。
我知道可以在那些支持它的设备上启用 TLS 1.1/1.2(参见例如here),甚至可以通过 here 所述的 Play Services 来实现。
但我宁愿不用麻烦来实施这些类型的 hack(以及处理来自用户的任何问题),而只是接受任何运行我的应用程序但不支持 TLS 1.1/1.2 的设备应该使用 http 而不是比https。正如我所说,无论如何都不会传达任何被归类为“敏感”的信息。随着时间的推移,不支持 TLS 1.1/1.2 的设备数量将会减少。
那么,话虽如此,有没有办法以编程方式确定设备支持哪些 TLS 版本?
目前我只使用 API 版本进行此检查(“从 API 21 开始使用 https”),但最好更明确地检查 TLS 支持,因为一些旧设备也支持 TLS 1.1/1.2。
【问题讨论】: