由于我需要使用一些旧版服务器,并且由于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标头?