2016-01-22 71 views
0

是否可以在应用程序代码级验证具体的TLSSSL版本?是否可以限制应用程序仅使用特定的TLSSSL版本?是否可以限制移动应用程序(android/iOS)应用程序仅使用特定的TLS版本?

考虑一个场景,网络服务器支持TLS1.01.11.2。移动应用程序(不论是android还是iOS)都以更新的API/SDK构建,支持TLS1.2。理论上,在任何协商例外的情况下,TLS上下文将回退到较低的上下文。那么,是否有任何可能的方法在应用程序代码中进行验证,只应使用TLS1.2并且不应接受较低版本。

我在这里看到了一些讨论SSL上下文可以在android中验证。 Android TLS connection and self signed certificate。但是如果在服务器端发生回退,操作系统是否会覆盖这个?

+0

是的,您可以将您的SSL/TLS客户端配置为仅与TLS 1.2或更高版本连接。具体细节取决于您使用的客户端。 – laalto

回答

0

如果服务器和客户端都支持TLS 1.2,那么只有TLS 1.2将通过正确实施的TLS/SSL协议进行协商。他们需要协商最高的协议的相互支持版本,而不是最低版本。

有关如何限制要接受/协商的协议版本的问题,取决于您使用的网络库。例如,在Android上,如果您直接使用SSLSocket实例,则可以在每个SSLSocket实例上设置启用的协议。如果您使用的是HTTP库,那么它可能会提供一个选项,使用SSLSocketFactory进行参数化,您可以在其中提供自己的SSLSocketFactory,它包装默认的SSLSocketFactory,获取SSLSocket实例,设置启用的协议集并返回这些定制的SSLSocket实例到HTTP堆栈。

请注意,某些HTTP堆栈(例如,okhttp)实现自己的TLS协议回退逻辑,该逻辑不检测中间人中的TLS协议降级。这种行为促进了POODLE的脆弱性。

相关问题