2013-07-09 18 views
3

正常的方式來獲得一個SSLSocketFactory將初始化一個新SSLContextTrustManagerKeyManagerSecureRandom並使用getSocketFactory()方法。但是,這不允許我啓用所需的密碼套件或協議。如何設置用於使用HttpsURLConnection創建的套接字的密碼和協議列表?

HttpsURLConnection允許進行此類更改的唯一配置是將其默認設置爲SSLSocketFactory。我可以創建一個擴展SSLSocketFactory並覆蓋getDefaultCipherSuites()方法的類,並將由createSocket()創建的套接字包裝爲設置所需的密碼和協議。但是,這種方法不允許我爲連接初始化一個TrustManager

是否有一種方法可以同時執行 - 設置密碼套件和協議並初始化信任管理器?

回答

3

採取由SSLContext.getSocketFactory()獲得的SSLSocketFactory和在SSLSocketFactory定製子類,其代表從SSLContext獲得的一個,但在createSocket()還設置所需的加密包裹。

1

請參閱JSSE參考指南。您可以通過系統屬性設置密碼套件。

+0

如果通過系統屬性進行設置,它將變爲全局。我可能只想爲特定的連接或甚至只是一個特定的應用程序設置它。 – varrunr

+0

同意。但是你沒有在你的問題中說明這個要求。 – EJP

+2

爲了完整性(剛剛關閉[this as a duplicate](http://stackoverflow.com/q/24888420/372643)),相關係統屬性爲'https.cipherSuites'。 – Bruno

相關問題