由於我需要使用一些舊版服務器,並且由於RC4
已從Java 8中刪除,所以我需要重新啓用一些基於RC4的密碼。如發行說明中所述,我們必須使用SSLSocket/SSLEngine.setEnabledCipherSuites()
。由於我使用的是Apache HTTP客戶端,因此我無法找到一種方法來執行此操作。提前致謝! (我也發現相當半拖車的問題,因此想到發佈一個新的答案)如何在使用Apache HTTP Client時設置EnabledCipherSuites?
0
A
回答
1
我正面臨同樣的問題,我能夠弄清楚這一點。
SecureProtocolSocketFactoryImpl protFactory = new SecureProtocolSocketFactoryImpl();
httpsClient.getHostConfiguration().setHost(host, port, httpsProtocol);
在「SecureProtocolSocketFactoryImpl」類,你必須要覆蓋的方法是公共套接字的createSocket()爲SecureProtocolSocketFactory類。
在這種方法中,你會得到一個插座這樣
SSLSocket soc = (SSLSocket) getSSLContext().getSocketFactory().createSocket(
socket,
host,
port,
autoClose
);
所以你就可以做類似下面。
ciphersToBeEnabled[0] = "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA";
soc.setEnabledCipherSuites(ciphersToBeEnabled);
希望你明白了。如果您有任何問題,請在下面評論。請注意,僅這樣做不會啓用與RC4相關的密碼。您需要修改jre/lib/security/file中的java「java.security」文件,並從禁用的算法列表中刪除CR4。
0
獲得HttpClient
的推薦方法是使用HttpClientBuilder
。在此構建器中,您可以設置HttpClientConnectionManager
,而這又可以採取Registry<ConnectionSocketFactory>
。在此ConnectionSocketFactory
中,您可以配置客戶機想要限制的密碼和協議。
示例代碼:
Registry<ConnectionSocketFactory> socketFactoryRegistry;
{
SSLContext sslcontext = <your SSLContext>;
socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", new PlainConnectionSocketFactory())
.register("https", new SSLConnectionSocketFactory(sslcontext,
<your supported protocols, could be null>,
<your supported ciphers, could be null>,
<your HostnameVerifier>
.build();
}
HttpClientBuilder b = HttpClientBuilder.create()
.setConnectionManager(new BasicHttpClientConnectionManager(socketFactoryRegistry))
.set<anything else you want>(<with what you want>);
HttpClient client = b.build();
相關問題
- 1. apache http client 4.3 - 如何設置協議版本
- 2. java.lang.NoClassDefFoundError:org/apache/http/client/HttpClient
- 3. java-calling使用Apache Http Client的方法
- 4. 如何在Apache下使用jersey-client與Apache httpclient?
- 5. 如何設置http超時使用asp?
- 6. 如何在Apache HTTP客戶端中設置連接超時?
- 7. 如何在使用apache時配置symfony
- 8. 使用Apache的HttpClient如何設置cookie中的HTTP請求
- 9. 如何設置Apache Archiva以使用HTTPS而不是HTTP
- 10. jodd http client如何設置忽略證書
- 11. 如何使用apache設置python-pulsar
- 12. Apache ISIS:設置HTTP響應
- 13. Apache Http組件 - 設置Cookie
- 14. 的Apache CXF - 設置HTTP頭
- 15. 如何設置Apache虛擬主機,如http:// home /,http:// office /等
- 16. 如何在Apache HTTP服務器配置中設置HTTP_CF_CONNECTING_IP
- 17. 如何爲Apache的HttpClient設置全局HTTP代理設置
- 18. 如何在http post中使用android-async-http:1.4.7設置超時時間?
- 19. 如何使用Java(Apache HTTP Client)模擬瀏覽器HTTPS POST請求?
- 20. PHP Codeigniter如何設置Rest Server和Client
- 21. 用apache設置git-http-backend 2.4
- 22. 在Apache HTTP服務器上設置mod_proxy
- 23. 如何在使用PhoneGap的FileTransfer()。download()時設置HTTP標頭?
- 24. 如何在使用camel-http時設置代理
- 25. 如何使Apache代理http請求https:
- 26. Apache Solr Client =如何啓用「wire」日誌記錄(使用log4j)
- 27. 集成到ServiceNow時,Apache Http Client 4.5身份驗證異常
- 28. 如何在apache camel上設置正文http POST請求
- 29. Apache Camel:如何在HTTP URI中動態設置標題值?
- 30. 如何在Apache JClouds中設置HTTP標頭?