SSLSocketFactory设置握手超时和套接字属性

时间:2012-01-08 22:57:09

标签: android ssl

我有一个协议,其中有一个普通的普通套接字升级到SSL / TLS。我需要能够控制处理SSL握手的超时以及其他参数,例如允许的协议版本。 (例如,关闭SSLv3)。

您可以通过javax.net.ssl.SSLSocketFactory执行除握手超时之外的所有操作,您可以拨打createSocket(socket, host port, autoClose),在返回的SSLSocket上设置其他设置,然后拨打startHandshake握手。但似乎没有任何方法可以设置握手超时设置,默认设置相当小。

永远不要害怕,android.net.SSLCertificateSocketFactory在这里!,这可以让你控制握手超时设置,但它也会改变createSocket(socket, host, port, autoClose)的行为以进行实际握手,所以当你得到你的从工厂回来的SSLSocket为时已晚,无法做任何会影响握手的事情(比如关闭SSLv3)。

有两种方法可以做到吗?我需要能够在Api v8上做到这一点

(SSLContext / SSLParameters看起来可能有用但是Api v9,但它看起来也像SSLCertificateSocketFactory创建自己的上下文,所以设置默认值不会有帮助。)

1 个答案:

答案 0 :(得分:-1)

对于特定协议选择,您在调用startHandshake之前尝试过SSLSocket.setEnabledProtocols吗?

对于握手超时设置,您可以使用SSLCertificateSocketFactory。