我有一個協議,其中有一個普通的普通套接字升級到SSL/TLS。我需要能夠控制處理SSL握手的超時以及其他參數(如允許的協議版本)。 (例如關閉SSLv3)。SSLSocketFactory設置握手超時和套接字屬性
您可以通過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創建它自己的上下文,因此設置默認的上下文不會有幫助)。
如果您從SSLCertificateSocketFactory獲取套接字(您需要設置超時時間),它會自動爲您調用startHandshake,因此您無法在套接字實例上設置協議。 – superfell 2012-01-10 03:44:41