【问题标题】:SSLSocketFactory setting handshake timeout and socket propertiesSSLSocketFactory 设置握手超时和套接字属性
【发布时间】: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 创建了自己的上下文,因此设置默认值无济于事。

【问题讨论】:

    标签: android ssl


    【解决方案1】:

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

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

    【讨论】:

    • 如果你从 SSLCertificateSocketFactory 获取套接字,你需要这样做来设置超时,它会自动为你调用 startHandshake,所以你没有机会在套接字实例上设置协议。
    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2012-04-20
    • 2012-11-12
    相关资源
    最近更新 更多