【发布时间】:2012-01-08 22:57:09
【问题描述】:
我有一个协议,其中有一个升级到 SSL/TLS 的常规普通套接字。我需要能够控制处理 SSL 握手的超时以及其他参数,例如允许的协议版本。 (例如关闭 SSLv3)。
除了通过javax.net.ssl.SSLSocketFactory 的握手超时之外,您可以执行所有这些操作,您可以调用createSocket(socket, host port, autoClose),在返回的SSLSocket 上设置其他设置,然后调用startHandshake 进行握手。但是好像没有办法设置握手超时设置,而且默认设置比较小。
不要害怕,android.net.SSLCertificateSocketFactory 就在这里!,这允许您控制握手超时设置,但它也改变了createSocket(socket, host, port, autoClose) 的行为以进行实际握手,所以当您从工厂做任何会影响握手的其他事情为时已晚(比如关闭 SSLv3)。
有什么办法可以做到这两点吗?我需要能够在 Api v8 上做到这一点
(SSLContext/SSLParameters 看起来可能有用,但它是 Api v9,但看起来 SSLCertificateSocketFactory 创建了自己的上下文,因此设置默认值无济于事。
【问题讨论】: